Interprocess Communication

Σχετικά έγγραφα
Κατανεμημένα Συστήματα

ιαδικτυακές Εφαρµογές

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

14. Δικτύωση με Java Δικτύωση με Java Sockets Δημιουργία της σύνδεσης Διευθυνσιοδότηση της σύνδεσης

(C) 2010 Pearson Education, Inc. All rights reserved.

Διδάσκων: Παναγιώτης Ανδρέου

Εργαστήριο Java. Αντικείµενο: Δίκτυα. Χειρισµός URLs. Άσκηση 1. Lab11. Πακέτο java.net

HY335 4ο Φροντιστήριο

Ειδικά Θέματα Προγραμματισμού

Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4

Βασικά Θέματα Επικοινωνίας. Κατανεμημένα Συστήματα 1

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

ικτύωσησε Java Κατανεµηµένα Συστήµατα 08-1

Επίπεδο Μεταφοράς. (ανεβαίνουμε προς τα πάνω) Εργαστήριο Δικτύων Υπολογιστών Τμήμα Μηχανικών Η/Υ και Πληροφορικής

Εισαγωγή στον Κατανεμημένο Προγραμματισμό

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη

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

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

Τεχνολογίες ιαδικτύου

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

Ανοχή απέναντι σε Σφάλµατα Fault Tolerance

Προγραμματισμός με BSD Sockets σε περιβάλλον Linux

ιαδικτυακές Εφαρµογές Πραγµατικού Χρόνου µε Java

Επίπεδο δικτύου IP διευθυνσιοδότηση

Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας Βιβλιοθηκονοµίας. Μοντέλο TCP/IP. Ενότητα E. Συστήµατα Επικοινωνίας

Αντικειµενοστρεφής Προγραµµατισµός

Κατανεμημένα Συστήματα. Javascript LCR example

Ιόνιο Πανεπιστήµιο Τµήµα Πληροφορικής Συστήµατα Επικοινωνίας. Μοντέλο TCP/IP. Ενότητα E. Πόσοι εµπλέκονται σε ένα Σύστηµα Επικοινωνίας

Φροντιστήριο Α' Κατανεμημένα Συστήματα Επιμέλεια: Μπούτσης Ιωάννης

Remote Method Invocation (RMI)

Τρίτη Πρόοδος [110 μονάδες] Απαντήσεις

ΕΑΠ/ΠΛΗ22/ΑΘΗ.3 4 η ΟΣΣ 15/03/2014 Συμπληρωματικές Διαφάνειες

Κατανεμημένα Συστήματα. Ενότητα # 4: Μηχανισμοί Επικοινωνίας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών

ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ

Δίκτυα Υπολογιστών ΙΙ (Ασκήσεις Πράξης)

Αρχεία και Ρεύματα. Αρχεία

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE)

CloudBox!: Ένα εργαλείο cloud αποθήκευσης αρχείων με κατανεμημένο τρόπο

Επίπεδο δικτύου IP Forwading κτλ

Πρωτόκολλα Διαδικτύου

Εισαγωγή Επανάληψη. ΤΕΙ Στερεάς Ελλάδας. ΣT Εξάμηνο, Κατεύθυνση Μηχανικών Δικτύων Τ.Ε. Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Διαδικτυακός Προγραμματισμός

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Διαδικτυακές Εφαρμογές Ενότητα 4: Streams

7.4 Πρωτόκολλο UDP. 3. Στη περίπτωση που ένα μήνυμα χωράει σε ένα τμήμα, χρησιμοποιούμε το πρωτόκολλο TCP.

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης

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

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

Network Address Translation (NAT)

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #11 η : Διαδικτυακές Εφαρμογές με τη Java

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών Δίκτυα υπολογιστών. (και το Διαδίκτυο)

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

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

ΤΕΙ Κρήτης, Παράρτηµα Χανίων

Κατανεµηµένος Προγραµµατισµός & Προγραµµατισµός στο ιαδίκτυο

Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals

HY-335a Project: microtcp *, μία lightweight TCP βιβλιοθήκη

Εργαστήριο Δικτύων Υπολογιστών

Τι είναι ένα δίκτυο υπολογιστών; Αρχιτεκτονική επιπέδων πρωτοκόλλων. Δικτυακά πρωτόκολλα

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

SOAP API. Table of Contents

Τεχνολογίες Παγκόσμιου Ιστού. 1η διάλεξη

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 10η Διάλεξη: Web Services

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

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

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Βασικά της γλώσσας JAVA

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

Υπολογιστές και ίκτυα Η/Υ.

6. Εξαιρέσεις στη γλώσσα Java

Διάλεξη 16: Πρόβλημα Συμφωνίας. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Paybybank RESTful API GUIDE

7.3 Πρωτόκολλο TCP. 1. Το TCP πρωτόκολλο παρέχει υπηρεσίες προσανατολισµένες σε σύνδεση. Σ Λ

//στο pin 3 του μικροελεγκτή συνδέουμε το control pin του ρελέ. WRITE 'I am on' στο SOCKET // λέω στον client ότι άναψα τη λάμπα

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

Υποδοχείς (Sockets) Προγραμματισμός II 1

Πανεπιςτήμιο Πελοποννήςου Τμήμα Επιςτήμησ και Τεχνολογίασ Τηλεπικοινωνιών. Διαχείριςη και Αςφάλεια Δικτύων. Το Πρωτόκολλο SNMP

Γλώσσες προγραµµατισµού. Ανάπτυξη Συστηµάτων Λογισµικού

Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών Οδηγός Εργαστηρίου ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ

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

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

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #2

Πρωτόκολλα Επικοινωνίας Πρωτόκολλο IP

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 11 : ΑΡΧΕΙΑ ΚΑΙ ΧΕΙΡΙΣΜΟΣ ΣΦΑΛΜΑΤΩΝ

PayByBank RESTful API GUIDE

Υλοποίηση Δικτυακών Υποδομών και Υπηρεσιών: Υπηρεσία Ηλεκτρονικού Ταχυδρομείου - SMTP

Εγχειρίδιο Συναρτήσεων. Socket *sopen(const int type, const int protocol, const char *host, const char *service)

Transcript:

ιαδιεργασική Επικοινωνία Interprocess Communication Μαρία Ι. Ανδρέου ΗΜΥ417, ΗΜΥ 663 Κατανεµηµένα Συστήµατα Χειµερινό Εξάµηνο 2006-2007 Τµήµα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήµιο Κύπρου

Tο API (application programming interface) για τα Internet Protocols Χαρακτηριστικά της διαδιεργασικής επικοινωνίας Για την επίτευξη της επικοινωνίας δυο διεργασιών µέσω µηνυµάτων αυτές θα πρέπει να υποστηρίζουν τις λειτουργίες επικοινωνίας µηνυµάτων send και receive. Μια διεργασία στέλνει (send) µήνυµα σε ένα προορισµό και µια διεργασία στον προορισµό λαµβάνει (receive) το µήνυµα. Σύγχρονη και ασύγχρονη επικοινωνία (synchronous and asynchronous communication). Σε κάθε προορισµό υπάρχει µια ουρά στην οποία αυτός που στέλνει µηνύµατα, προς τον αντίστοιχο προορισµό, τα εισάγει και µια διεργασία στον προορισµό λαµβάνει τα µηνύµατα από την ουρά Synchronous communication: οι λειτουργίες send and receive είναι blocking Asynchronous communication: η λειτουργία send είναι ΝΟΝ-blocking ενώ η receive µπορεί να είναι είτε blocking είτε NON-blocking. Σχολιάστε γιατί µπορεί να συµβεί αυτό. 2

Tο API (application programming interface) για τα Internet Protocols Χαρακτηριστικά της διαδιεργασικής επικοινωνίας (2) Προορισµοί µηνύµατος (message destinations) στο Internet Protocol (IP) τα µηνύµατα στέλνονται στον προορισµό ο οποίος προσδιορίζεται από ένα ζεύγος της µορφής (internet address, local port). local port είναι ο προορισµό ενός µηνύµατος µέσα σε ένα υπολογιστής και καθορίζεται από ένα ακέραιο αριθµό. Ένα port έχει ένα (ή περισσότερους, στην περίπτωση του multicast) receivers και µπορεί να έχει πολλούς Senders Μια διεργασία µπορεί να λαµβάνει από πολλά διαφορετικά Ports Οποία διεργασία ξέρει τη διεύθυνση του υπολογιστή και τον αριθµό του port όπου λαµβάνει µια άλλη διεργασία, τότε µπορεί να επικοινωνήσει µαζί της. Οι Servers συνήθως δηµοσιοποιούν τα ports numbers του στους Clients 3

Sockets and ports socket any port agreed port socket client Internet address = 138.37.94.248 message other ports server Internet address = 138.37.88.249 4

Tο API (application programming interface) για τα Internet Protocols Χαρακτηριστικά της διαδιεργασικής επικοινωνίας (3) Η Αξιοπιστία (Reliability) µπορεί να οριστεί σε σχέση µε την εγκυρότητα (validity) ακεραιότητα (integrity). Ενόσω ισχύει η ιδιότητα της εγκυρότητας µπορούµε να καλούµε µια point-to-point message service αξιόπιστη ακόµα και αν ένας «εύλογος» αριθµός µηνυµάτων διακόπηκαν ή χάθηκαν. καλούµε µια point-to-point message service Αναξιόπιστη (unreliable) αν τα µηνύµατα δεν παραδίνονται εγγυηµένα. Αναφορικά µε την Ακεραιότητα των µηνυµάτων αυτά θα πρέπει να παραδίνονται αµετάβλητα και χωρίς επαναλήψεις (duplications) 5

Tο API (application programming interface) για τα Internet Protocols Χαρακτηριστικά της διαδιεργασικής επικοινωνίας (4) Σειρά (ordering). Σε µερικές εφαρµογές τα µηνύµατα θα πρέπει να παραδίνονται µε την σειρά που έχουν αποσταλεί από τον αποστολέα. Παράδοση των µηνυµάτων σε διαφορετική σειρά από αυτή του αποστολέα θεωρείται ΑΠΟΤΥΧΙΑ της εφαρµογής αυτής. 6

Tο API (application programming interface) για τα Internet Protocols Sockets Τα πρωτόκολλο επικοινωνίας UDP και TCP κάνουν χρήση socket abstraction η οποία παρέχει ένα τελικό σηµείο για την επικοινωνία µεταξύ δύο διεργασιών. Η διαδιεργασιακή επικοινωνία επιτυγχάνεται µε την µετάδοση ενός µηνύµατος ανάµεσα σε ένα socket της µιας διεργασίας και ένα socket της άλλης διεργασίας. Για να λάβει µια διεργασία ένα µήνυµα το socket της ΠΡΕΠΕΙ να είναι δεσµευµένο σε ένα local port και µια από τις Internet addresses (IA) του υπολογιστή στον οποίο εκτελείται Τα µηνύµατα που αποστέλλονται σε συγκεκριµένη IA και συγκεκριµένο Port µπορούν να ληφθούν από τη διεργασία που το socket της είναι δεσµευµένο σε αυτή την IA και post number κάθε υπολογιστής έχει πολλά post numbers (2 16 ) Μια διεργασία µπορεί να λαµβάνει από ΠΟΛΛΑ ports, αλλά ΕΝ µπορεί να µοιράζεται ports µε άλλες διεργασίες, στον ίδιο υπολογιστή. Εξαίρεση αποτελεί η περίπτωση όπου οι διεργασίες χρησιµοποιούν IP multicast Οποιοσδήποτε αριθµός διεργασιών µπορούν να στέλνουν µηνύµατα σε ένα port (κάποιου υπολογιστή) Κάθε socket σχετίζεται µε ένα συγκεκριµένο πρωτόκολλο, είτε το UDP ή TCP 7

Java API για Internet addresses H Java παρέχει την κατηγορία (class) InetAddress, για να αναπαραστήσει IAs. Οι χρήστες αυτής της κατηγορίας αναφέρονται στις υπολογιστικές συσκευές χρησιµοποιώντας το Domain Name Service (DNS) hostnames. π.χ. Ένας τρόπος να βρούµε την ΙΑ του web server του τµήµατος ΗΜΥ του παν. Κύπρου είναι InetAddress acomputer = InetAddress.getByName( eng.ucy.ac.cy/ece ); αυτή η µέθοδος επιστρέφει an UnknownException σε περίπτωση που δίνεται λάθος DNS. 8

UDP client sends a message to the server and gets a reply import java.net.*; import java.io.*; public class UDPClient{ public static void main(string args[]){ // args give message contents and server hostname DatagramSocket asocket = null; try { asocket = new DatagramSocket(); byte [] m = args[0].getbytes(); InetAddress ahost = InetAddress.getByName(args[1]); int serverport = 6789; DatagramPacket request = new DatagramPacket(m, args[0].length(), ahost, serverport); asocket.send(request); byte[] buffer = new byte[1000]; DatagramPacket reply = new DatagramPacket(buffer, buffer.length); asocket.receive(reply); System.out.println("Reply: " + new String(reply.getData())); }catch (SocketException e){system.out.println("socket: " + e.getmessage()); }catch (IOException e){system.out.println("io: " + e.getmessage());} }finally {if(asocket!= null) asocket.close();} } } 9

UDP server repeatedly receives a request and sends it back to the client import java.net.*; import java.io.*; public class UDPServer{ public static void main(string args[]){ DatagramSocket asocket = null; try{ asocket = new DatagramSocket(6789); byte[] buffer = new byte[1000]; while(true){ DatagramPacket request = new DatagramPacket(buffer, buffer.length); asocket.receive(request); DatagramPacket reply = new DatagramPacket(request.getData(), request.getlength(), request.getaddress(), request.getport()); asocket.send(reply); } }catch (SocketException e){system.out.println("socket: " + e.getmessage()); }catch (IOException e) {System.out.println("IO: " + e.getmessage());} }finally {if(asocket!= null) asocket.close();} } } 10

TCP stream communication Το API του TCP protocol παρέχει µια αφηρηµένη µορφή ενός stream από bytes στο οποίο µπορούν να γραφτούν δεδοµένα και από το οποίο µπορούν να διαβαστούν δεδοµένα Αυτή η αφηρηµένη µορφή stream κρύβει τα ακόλουθα χαρακτηριστικά ενός δικτύου Μέγεθος µηνύµατος: η υλοποίηση του TCP stream αποφασίζει πόσα δεδοµένα να συλλέξει πριν το στείλει το µήνυµα σε ένα ή περισσότερα πακέτα Χαµένα µηνύµατα: το TCP χρησιµοποιεί ένα acknowledgement σχήµα. Έλεγχος ροής: το TCP προσπαθεί να «ταιριάξει» την ταχύτητα της διαδικασίας που γράφει και αυτής που διαβάζει σε ένα stream Σειρά µηνυµάτων και duplications: χρήση ταυτότητας µηνύµατος (message identifier) Προορισµός µηνύµατος: το TCP εγκαθιδρύει σύνδεση µεταξύ των διαδικασιών που θα επικοινωνήσουν µέσω του stream. Χρήση connect request και accept request από τους client και server αντίστοιχα. 11

TCP stream communication (2) Το API για stream communication υποθέτει ότι, όταν για ένα ζεύγος διεργασιών έχει εγκαθιδρυθεί σύνδεση επικοινωνίας, µια από αυτές παίζει το ρόλο του πελάτη (client) και η άλλη το ρόλο του εξυπηρέτη (server) Ρόλος του client είναι να: δηµιουργήσει ένα stream socket δεσµευµένο σε οποιοδήποτε (ελεύθερο) port κάνει ένα connect request ζητώντας σύνδεση µε τον server στο server post Ρόλος του server είναι να: δηµιουργήσει ένα listening socket δεσµευµένο σε ένα δεδοµένο server port περιµένοντας από clients requests για σύνδεση το listening socket διατηρεί µια ουρά από εισερχόµενες αιτήσεις. όταν γίνει δεκτή (accept) µια αίτηση ενός client ένα δηµιουργείται ένα ΝΕΟ stream socket για τον server για να επικοινωνεί µε τον συγκεκριµένο client. Στο µεταξύ το δικό του socket το χρησιµοποιεί όπως και πριν για να ακούει για τυχών νέες αιτήσεις από άλλους (ή τον ίσιο client) 12

TCP stream communication (3) Για την επικοινωνία δυο διεργασιών χρειάζεται ένα ζεύγος από sockets (όπως είπαµε πριν) και ένα ζεύγος από streams, ένα για είσοδο (input stream) και ένα για έξοδο (output stream). Μια διεργασία στέλνει πληροφορία στην άλλη γράφοντας στο output stream της και η άλλη διεργασία παίρνει την πληροφορία διαβάζοντας από το input stream της. Τι θα συµβεί όταν µια εφαρµογή κλείσει ( close ) a socket; 13

Θέµατα σχετικά µε stream communication Matching of data types Blocking Threads 14

Failure model (stream communication) TCP streams χρησιµοποιούν Checksums για ανίχνευση και απόρριψη corrupt packets Sequence number για ανίχνευση και απόρριψη διπλών πακέτων Για την ιδιότητα της αξιοπιστίας του TCP Σχετικά µε την ιδιότητα της εγκυρότητας του TCP κάνει χρήση timeouts retransmissions => Τα µηνύµατα παραδίνονται εγγυηµένα ακόµα και αν κάποιο από αυτά χαθεί. 15

Failure model (stream communication) (2) Όταν µια σύνδεση ΙΑΚΟΠΕΙ ή χαλάσει, τότε η διεργασία που τη χρησιµοποιεί θα ενηµερωθεί για αυτή την εξέλιξη. Οι επιπτώσεις που µπορεί να προκύψουν είναι οι εξής: Η διεργασία που χρησιµοποιεί την σύνδεση ΕΝ καταλαβαίνει αν η διακοπεί προέκυψε από βλάβη στο δίκτυο ή από βλάβη στην άλλη διεργασία µε την οποία επικοινωνούσε. Οι διεργασίες που ήταν σε επικοινωνία δεν µπορούν να ξέρουν αν τα µηνύµατα που έστειλαν προς το τέλος λήφθηκαν από την άλλη διεργασία ή όχι. 16

TCP client makes connection to server, sends request and receives reply import java.net.*; import java.io.*; public class TCPClient { public static void main (String args[]) { // arguments supply message and hostname of destination Socket s = null; try{ int serverport = 7896; s = new Socket(args[1], serverport); DataInputStream in = new DataInputStream( s.getinputstream()); DataOutputStream out = new DataOutputStream( s.getoutputstream()); out.writeutf(args[0]); // UTF is a string encoding see Sn 4.3 String data = in.readutf(); System.out.println("Received: "+ data) ; }catch (UnknownHostException e){ System.out.println("Sock:"+e.getMessage()); }catch (EOFException e){system.out.println("eof:"+e.getmessage()); }catch (IOException e){system.out.println("io:"+e.getmessage());} }finally {if(s!=null) try {s.close();}catch (IOException e){system.out.println("close:"+e.getmessage());}} } } 17

TCP server makes a connection for each client and then echoes the client s request import java.net.*; import java.io.*; public class TCPServer { public static void main (String args[]) { try{ int serverport = 7896; ServerSocket listensocket = new ServerSocket(serverPort); while(true) { Socket clientsocket = listensocket.accept(); Connection c = new Connection(clientSocket); } } catch(ioexception e) {System.out.println("Listen :"+e.getmessage());} } } // this figure continues on the next slide 18

continued class Connection extends Thread { DataInputStream in; DataOutputStream out; Socket clientsocket; public Connection (Socket aclientsocket) { try { clientsocket = aclientsocket; in = new DataInputStream( clientsocket.getinputstream()); out =new DataOutputStream( clientsocket.getoutputstream()); this.start(); } catch(ioexception e) {System.out.println("Connection:"+e.getMessage());} } public void run(){ try { // an echo server String data = in.readutf(); out.writeutf(data); } catch(eofexception e) {System.out.println("EOF:"+e.getMessage()); } catch(ioexception e) {System.out.println("IO:"+e.getMessage());} } finally{ try {clientsocket.close();}catch (IOException e){/*close failed*/}} } } 19

Επίπεδα Ενδιάµεσου Επιπέδου Middleware layers Applications, services RMI and RPC This chapter request-reply protocol marshalling and external data representation Middleware layers UDP and TCP 20

Εξωτερική αναπαράσταση εδοµένων και Παράθεση τους External Data Representation and Marshalling Πως αναπαριστάται η πληροφορία που θέλουµε να αποστείλουµε µέσω ενός µηνύµατος; Η πληροφορία αυτή µετατρέπεται σε µια σειρά από bytes (σε τι µορφή θα µπορούσε να είναι πριν την ενσωµατώσοµε σε ένα µήνυµα;) Ο τρόπος αποθήκευσης των βασικών τύπων δεδοµένων είναι ο ίδιος σε όλους τους υπολογιστές; η απάντηση είναι ΟΧΙ. Πως θα µπορούσαµε να αντιµετωπίσοµε αυτό το πρόβληµα; 21

Μέθοδοι για επίτευξη επικοινωνίας µεταξύ διαφορετικών υπολογιστικών µονάδων Μέθοδοι µπορούν να χρησιµοποιηθούν έτσι ώστε να είναι δυνατή η ανταλλαγή δεδοµένων (µεταξύ δικτυοµένων )σε δυαδική µορφή Οι τιµές των δεδοµένων µετατρέπονται σε µια συµφωνηµένη εξωτερική µορφή πριν την µεταφορά τους και όταν παραληφθούν µετατρέπονται κατάλληλα µε βάση τα χαρακτηριστικά του συστήµατος του παραλήπτη. Υπάρχει περίπτωση αυτή η διαδικασία να παραλειφθεί; Οι τιµές αποστέλλονται µε την µορφή που τις αναγνωρίζει ο αποστολέας µαζί µε πληροφορίες για τη µορφή τους και ο παραλήπτης έχει την ευθύνη να τις µετατρέψει σε κατάλληλη για αυτόν µορφή Προφανώς τα δεδοµένα ΕΝ µεταβάλλονται κατά την µεταφορά τους Για την υποστήριξη RPC και RMI πρέπει αν βρεθεί τρόπος αναπαράστασης οποιουδήποτε τύπου δεδοµένων. Γιατί χρειάζεται αυτό; Οι παράµετροι εισόδου των διαδικασιών/µεθόδων µπορεί να είναι οποιοδήποτε τύπου, όπως και οι τιµές εξόδου επίσης. 22

Ισοπέδωση δοµών δεδοµένων Flatten Data Types Ισοπέδωση οµών εδοµένων είναι η διάσπαση µιας δοµής δεδοµένων στα συνιστώντα µέρη της σε επίπεδο βασικών τύπων (primitive types). π.χ. Ένα η δοµή Person που είναι struct Person { string name; string palce; long year; } µπορούµε να πούµε ότι αποτελείται (συνιστάται) από δυο strings και ένα long αριθµό. το string δεν είναι βασικός τύπος. Τι είναι ένα String; 23

Παράθεση - Marshalling Marshalling είναι η διαδικασία της συναρµολόγησης µιας συλλογής από δεδοµένων σε µορφή κατάλληλη µια µεταφορά τους µέσω µηνύµατος. UnMarshalling είναι η διαδικασία της αποσυναρµολόγησης ενός µηνύµατος στην αντίστοιχη συλλογής δεδοµένων. Η διαδικασία UnMarshalling γίνεται στον προορισµό ενώ η διαδικασία Marshalling στην πηγή του µηνύµατος. 24

3 εναλλακτικές για την εξωτερική απεικόνιση δεδοµένων και marshalling Κοινός τρόπος απεικόνισης δεδοµένων της CORBA. Μπορεί να χρησιµοποιηθεί από πολλές γλώσσες προγραµµατισµού και αφορά την εξωτερική απεικόνιση σύνθετων και βασικών δοµών δεδοµένων. Java s serialization, αφορά την ισοπέδωση και εξωτερική απεικόνιση οποιουδήποτε απλού αντικειµένου (object) ή δέντρου από αντικείµενα που χρειάζεται να µεταφερθούν µέσω µηνύµατος ή να αποθηκευτούν στον δίσκο. XML (extensible make up language) που ορίζει µια textual µορφή για αναπαράσταση δοµηµένων δεδοµένων. 25

3 εναλλακτικές για την εξωτερική απεικόνιση δεδοµένων και marshalling (2) Marshalling Για CORBA και Java serialization το middleware layer είναι υπεύθυνο Για XML υπάρχει λογισµικό που κάνει το marshalling για πολλές πλατφόρµες και περιβάλλοντα προγραµµατισµού Για CORBA και Java serialization οι βασικοί τύποι δεδοµένων παραθέτονται σε δυαδική µορφή. Στην XML αναπαριστώνται σε textual µορφή. Στην αναπαράσταση της CORBA ΕΝ περιλαµβάνονται πληροφορίες για τους τύπους των δεδοµένων, παρά µόνα οι τιµές. Στην περίπτωση της Java serialization και τις XML χρειάζονται πληροφορίες και για τον τύπο των δεδοµένων και για τις τιµές τους. 26

CORBA Common Data Representation for primitive types CORBA CDR ορίζει την αναπαράσταση τόσο για big-endian όσο και για little-endian orderings. Οι τιµές αποστέλλονται µε βάση την σειρά που ακολουθεί το σύστηµα του αποστολέα. Η σειρά αυτή αναφέρεται στο µήνυµα, έτσι ώστε ο παραλήπτης να µπορεί να αποφανθεί να χρειάζεται να µετατρέψει τα δεδοµένα που έλαβε ή όχι. Η CORBA CDR υποστηρίζει 15 βασικούς τύπους 27

CORBA CDR for constructed types Type sequence string array struct enumerated union Representation length (unsigned long) followed by elements in order length (unsigned long) followed by characters in order (can also can have wide characters) array elements in order (no length specified because it is fixed) in the order of declaration of the components unsigned long (the values are specified by the order declared) type tag followed by the selected member 28

CORBA CDR message Οι τιµές των βασικών τύπων που ορίζουν µια σύνθεση δοµή παραθέτονται σε µια ακολουθία από bytes µε συγκεκριµένη σειρά. ες το ακόλουθο παράδειγµα. index in sequence of bytes 0 3 4 7 8 11 12 15 16 19 20-23 24 27 5 "Smit" "h " 6 "Lond" "on " 1934 4 bytes notes on representation length of string Smith length of string London unsigned long The flattened form represents a Person struct with value: { Smith, London, 1934} 29

Java object serialization Έστω η δοµή struct Person { string name; string palce; long year; } Η δοµή αυτή στην Java θα µπορούσε να οριστεί ως εξής (+ serialization): Public class Person implements Serializable{ private String name; private String place; int year; public Person (String n, String p, int y){ name = n; place = p; year = y; } // άλλες µέθοδοι } 30

Interface Serializable και serialization Το Interface Serializable βρίσκεται στο πακέτο java.io και δεν έχει καµία µέθοδο. Το νόηµα του ότι ένα class implements αυτό το interface είναι ότι τα objects αυτού του class µπορούν να «γίνουν Serialized» O όρος serialization αναφέρεται στην ενέργεια της ισοπέδωσης ενός object ή µιας σειράς από objects σε σειριακή µορφή, έτσι ώστε να µπορούν να αποθηκευτούν στο δίσκο ή να αποσταλούν µέσω κάποιου µηνύµατος. Deserialization είναι η διαδικασία της επαναφοράς της κατάστασης ενός object (ή σειρά από objects) από την σειριακή του (τους) µορφή. 31

Interface Serializable και serialization (2) Τι πληροφορίες χρειάζονται για να µπορεί να γίνει ισοπέδωση ενός αντικειµένου; Class name and version number (αλλάζει όταν γίνουν σηµαντικές αλλαγές σε µια κατηγορία) Java objects είναι δυνατό να κάνουν reference (να αναφέρονται) σε άλλα objects. Πως γίνεται η ισοπέδωση σε τέτοιες περιπτώσεις; Handle είναι µια αναφορά σε ένα object στην γραµµική µορφή (serialized form) Η διαδικασία του serialization πρέπει να εξασφαλίζει ότι υπάρχει 1-1 αντιστοιχία µεταξύ των objects και των handles Κάθε object απεικονίζεται ΜΟΝΟ µια φορά. Τι θα συµβεί αν χρειάζεται να αναφερθούµε περισσότερες φορές σε ένα object; (χρεισιµοποιούµε το handle παρά το object) 32

Interface Serializable και serialization (3) Για να κάνετε serialize ένα object πρέπει: Να γράψετε πληροφορίες για την class στην οποία ανήκει Ακολουθείται από τον τύπο και το όνοµα από τα instance variables τους τι θα συµβεί αν ένα instance variable ανήκει σε ένα άλλο class; Η τιµή ενός instance variable η οποία είναι βασικός τύπος γράφεται σε Portable binary format µε χρήση µεθόδων από την ObjectOutputStream class. Strings and characters γράφονται µε χρήση της µεθόδου writeutf (universal transfer format-utf-8) 33

Java reflection Το Reflection δίνει τη δυνατότητα άσκησης ερωτήσεων αναφορικά µε τις ιδιότητες µιας κατηγορίας (class). Name Types of instance variables and methods ηµιουργίας κατηγοριών classes δίνοντας το όνοµα τους και ένα constructor µε δεδοµένο τύπο παραµέτρων για κάθε κατηγορία Serialization and deserialization µε ένα γενικό τρόπο 34

Indication of Java serialized form Serialized values Explanation Person 8-byte version number h0 class name, version number 3 int year java.lang.string name: java.lang.string place: number, type and name of instance variables 1934 5 Smith 6 London h1 values of instance variables The true serialized form contains additional type markers; h0 and h1 are handles 35

XML definition of the Person structure <person id="123456789"> <name>smith</name> <place>london</place> <year>1934</year> <!-- a comment --> </person > 36

Illustration of the use of a namespace in the Person structure <person pers:id="123456789" xmlns:pers = "http://www.cdk4.net/person"> <pers:name> Smith </pers:name> <pers:place> London </pers:place > <pers:year> 1934 </pers:year> </person> 37

An XML schema for the Person structure <xsd:schema xmlns:xsd = URL of XML schema definitions > <xsd:element name= "person" type ="persontype" /> <xsd:complextype name="persontype"> <xsd:sequence> <xsd:element name = "name" type="xs:string"/> <xsd:element name = "place" type="xs:string"/> <xsd:element name = "year" type="xs:positiveinteger"/> </xsd:sequence> <xsd:attribute name= "id" type = "xs:positiveinteger"/> </xsd:complextype> </xsd:schema> 38

Αναπαράσταση Αναφοράς σε Αποµακρυσµένο Αντικείµενο Representation of a remote object reference Java και CORBA υποστηρίζουν κατανεµηµένα αντικείµενα. Όταν ένας client καλεί µια µέθοδο σε ένα αποµακρυσµένο αντικείµενο (remote object), τότε στέλνετε ένα µήνυµα στον server στον οποίο βρίσκεται αυτό αντικείµενο αυτό. Στο µήνυµα πρέπει να καθορίζεται το αντικείµενο στο οποίο θα κλιθεί η επιλεγµένη µέθοδος. Remote object reference είναι η ταυτότητα ενός αποµακρυσµένου αντικειµένου η οποία είναι µοναδική σε ολόκληρο το κατανεµηµένο σύστηµα. Ποια θα µπορούσε να είναι αυτή η ταυτότητα; 32 bits 32 bits 32 bits 32 bits Internet address port number time object number interface of remote object 39

Client-Server communication Request-reply protocol Client Server dooperation (wait) (continuation) Request message Reply message getrequest select object execute method sendreply 40

Λειτουργίες στο request-reply protocol public byte[] dooperation (RemoteObjectRef o, int methodid, byte[] arguments) sends a request message to the remote object and returns the reply. The arguments specify the remote object, the method to be invoked and the arguments of that method. public byte[] getrequest (); acquires a client request via the server port. public void sendreply (byte[] reply, InetAddress clienthost, int clientport); sends the reply message reply to the client at its Internet address and port. 41

οµή του µηνύµατος στο Request-reply protocol messagetype requestid objectreference methodid arguments int (0=Request, 1= Reply) int RemoteObjectRef int or Method array of bytes 42

Θέµατα προς συζήτηση στο request-reply protocol Failure model Timeouts Duplicate request message Lost of reply History 43

RPC exchange protocols Name R Request Messages sent by Client Server Client RR Request Reply RRA Request Reply Acknowledge reply 44

HTTP request message method URL or pathname HTTP version headers message body GET //www.dcs.qmw.ac.uk/index.html HTTP/ 1.1 45

HTTP reply message HTTP version status code reason headers message body HTTP/1.1 200 OK resource data 46