HY-335 : Δίκτυα Υπολογιστών Μαρία Παπαδοπούλη Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χειμερινό εξάμηνο O R E K W N T net works Επίπεδo Εφαρμογής
Επίπεδο εφαρμογής 2 Δημιουργώντας μια δικτυακή εφαρμογή Γράφουμε προγράμματα τα οποία: m Τρέχουν σε διαφορετικά τερματικά συστήματα m και επικοινωνούν μέσω δικτύου Π.χ., το λογισμικό του web server επικοινωνεί με το λογισμικό του browser Λίγο λογισμικό έχει γραφτεί για συσκευές στον πυρήνα του δικτύου m Οι συσκευές στον πυρήνα του δικτύου δεν τρέχουν κώδικα εφαρμογής χρήστη m Η εφαρμογή στα τερματικά συστήματα επιτρέπει τη ραγδαία ανάπτυξη και διάδοση εφαρμογών application transport network data link physical application transport network data link physical application transport network data link physical
Επίπεδο εφαρμογής 3 Γενικές αρχιτεκτονικές εφαρμογών r Πελάτη-εξυπηρετητή (client-server) r Διομότιμο σύστημα (peer-to-peer P2P) r Υβριδικό του πελάτη-εξυπηρετητή και του διομότιμου συτήματος
Επίπεδο εφαρμογής 4 Client-server αρχιτεκτονική server: m Συνεχής διαθεσιμότητα (always-on host) m Μόνιμη IP διεύθυνση m Ομάδα από servers (server farms) για κλιμάκωση (scaling) clients: m Επικοινωνούν με τον server m Πιθανότατα χωρίς συνεχή σύνδεση m Πιθανότατα με δυναμικές IP addresses (που λαμβάνουν από έναν DCHP server) m Δεν επικοινωνούν άμεσα ο ένας client με τον άλλον
Επίπεδο εφαρμογής 5 Καθαρή P2P αρχιτεκτονική r Δεν υπάρχει server που να είναι συνεχώς διαθέσιμος r Τυχαία τερματικά συστήματα επικοινωνούν το ένα με το άλλο r Οι peers έχουν διακοπτόμενη σύνδεση στο Ιντερνετ και οι IP διευθύνσεις τους μπορεί να αλλάζουν r Παράδειγμα: Gnutella Είναι κλιμακώσιμα αλλά όχι εύκολο να τα διαχειριστείς
Επίπεδο εφαρμογής 6 Υβριδικό client-server και P2P Skype m Εφαρμογή διαδικτυακής τηλεφωνίας m Εύρεση διεύθυνσης απομακρυσμένου προσώπου: κεντρικοποιημένος server(s) m Η σύνδεση από client σε client είναι άμεση (όχι μέσω server) Άμεση ανταλλαγή μυνημάτων (instant messaging) m Η συνομιλία μεταξύ δύο χρηστών είναι P2P m Εντοπισμός παρουσίας/θέσης κεντρικοποιημένη: Ο χρήστης καταχωρεί την IP διεύθυνσή του με κεντρικό server όταν μπαίνει online Ο χρήστης επικοινωνεί με τον κεντρικό server για να βρει τις IP διευθύνσεις των επαφών του
Επίπεδο εφαρμογής 7 Διεργασίες που επικοινωνούν Διεργασία: πρόγραμμα που τρέχει σε ένα host r Στον ίδιο host: δύο διεργασίες επικοινωνούν μεταξύ τους με διαδεργασιακή επικοινωνία (inter- process communication) (ορίζεται στο OS) Διεργασίες σε διαφορετικούς hosts επικοινωνούν με την ανταλλαγή μηνυμάτων Διεργασία client: η διεργασία που ξεκινάει την επικοινωνία Διεργασία server : η διεργασία που περιμένει για επικοινωνία Σημείωση: εφαρμογές με P2P αρχιτεκτονικές έχουν διεργασίες client & server
Επίπεδο εφαρμογής 8 Διεργασία στον δέκτη Ο sender προσδιορίζει τη διεργασία στη συσκευή του δέκτη χρησιμοποιώντας τα παρακάτω δύο στοιχεία: r όνομα ή διεύθυνση της συσκευής r ένα identifier που προσδιορίζει την διεργασία στον δέκτη προσδιορίζει μοναδικά το network interface του δέκτη μοναδικότητα στο Internet IP address Port number
Επίπεδο εφαρμογής 9 Sockets r Διεργασίες στέλνουν/λαμβάνουν μηνύματα προς/από socket r Socket μοιάζει με μια “πόρτα” m Η αποστέλουσσα διεργασία στέλνει το μήνυμα έξω από την πόρτα m Η αποστέλλουσα διεργασία υποθέτει υποδομή μεταφοράς πίσω από την πόρτα που φέρνει το μήνυμα στο socket της λαμβάνουσας διεργασίας διεργασία TCP με buffers, μεταβλητές socket host ή server διεργασία TCP με buffers, μεταβλητές socket host ή server Internet Ελέγχεται από το OS Ελέγχεται από το σχεδιαστή της εφαρμογής API - επιλέγει: r Το πρωτόκολλο μεταφοράς r τιμές σε παραμέτρους Το socket είναι η διεπαφή μεταξύ του επιπέδου εφαρμογής & επιπέδου μεταφοράς μέσα σε μία συσκευή καθώς επίσης μεταξύ της εφαρμογής & δικτύου
Επίπεδο εφαρμογής 10 Διευθυνσιοδότηση διεργασιών Για να λάβει μηνύματα η διεργασία πρέπει να έχει έναν identifier Ο host έχει μία μοναδική 32-bit IP διεύθυνση Αρκεί η IP διεύθυνση του host στον οποίο τρέχει η διεργασία για τον προσδιοριμσό της διεργασίας; Aπάντηση: ΌΧΙ, πολλές διεργασίες μπορεί να τρέχουν στον ίδιο host O identifier περιέχει IP διεύθυνση & αριθμούς θυρών (port numbers) της διεργασίας στο host Παραδείγματα αριθμών θυρών: m HTTP server: 80 m Mail server: 25 Για να στείλουμε ένα HTTP μήνυμα στον gaia.cs.umass.edu web server: m IP διεύυθνση: m Αριθμός θ ύρας: 80
Επίπεδο εφαρμογής 11 Πρωτόκολλα επιπέδου εφαρμογής r Τύποι μηνυμάτων που ανταλάσσονται m π.χ., αίτηση, απάντηση r Σύνταξη μηνύματος: m Τι πεδία υπάρχουν στο μήνυμα και πως αυτά διαχωρίζονται r Σημασιολογία μηνύματος m Σημασία της πληροφορίας στα πεδία r Κανόνες για το πότε και πώς οι διεργασίες στέλνουν & απαντούν σε μηνύματα Πρωτόκολλα δημοσίου τομέα: r Ορίζονται σε RFCs r Επιτρέπουν διαλειτουργικότητα r π.χ., HTTP, SMTP Ιδιοταγή πρωτόκολλα: r π.χ., KaZaA
Επίπεδο εφαρμογής 12 Τι υπηρεσία μεταφοράς χρειάζεται μία εφαρμογή; Απώλεια δεδομένων r Κάποιες εφαρμογές (π.χ., ήχου) μπορούν να ανεχθούν κάποιες απώλειες r Άλλες εφαρμογές (π.χ., μεταφορά αρχείων, telnet) απαιτούν 100% αξιόπιστη μεταφορά δεδομένων Χρονισμός r Κάποιες εφαρμογές (π.χ., διαδικτυακή τηλεφωνία, διαδραστικά παιχνίδια) απαιτούν χαμηλή καθυστέρηση για να είναι αποτελεσματικές Εύρος ζώνης r Κάποιες εφαρμογές (π.χ., πολυμεσικές) απαιτούν κάποιο ελάχιστο εύρος ζώνης για να είναι αποτελεσματικές r Άλες εφαρμογές (“ελαστικές εφαρμογές”) χρησιμοποιούν οποιοδήποτε εύρος ζώνης είναι διαθέσιμο
Επίπεδο εφαρμογής 13 Απαιτήσεις υπηρεσίας μεταφοράς για συνήθεις εφαρμογές Εφαρμογή Μεταφορά αρχείων Έγγραφα Web φωνή/video πραγματικού χρόνου Αποθηκευμένη φωνή/video Διαδραστικά παιχνίδια Άμεση ανταλλαγή μηνυμάτων Απώλεια δεδομένων Καμία απώλεια Ανοχή σε απώλειες Καμία απώλεια Εύρος ζώνης ελαστική ήχος: 5kbps-1Mbps video:10kbps-5Mbps Όπως πριν Λίγα kbps πάνω ελαστική Ευαισθησία σε καθυστερήσεις όχι ναι, της τάξης των100 msec ναι, μερικά secs ναι, της τάξης των 100 msec Ναι και όχι
Επίπεδο εφαρμογής 14 Πρωτόκολλα μεταφοράς υπηρεσιών στο Internet TCP υπηρεσία: Συνδεσιστρεφής: απαιτείται εγκαθίδρυση μεταξύ διεργασιών των client & server Αξιόπιστη μεταφορά μεταξύ διεργασιών των sender & receiver Έλεγχος ροής: ο sender δεν κατακλύζει τον receiver Έλεγχος συμφόρησης: μειώνει την ροή του sender στην περίπτωση υπερφόρτωσης του δικτύου Δεν παρέχει χρονικές ή ελάχιστου bandwidth εγγυήσεις UDP υπηρεσία: Αναξιόπιστη μεταφορά δεδομένων μεταξύ της αποστέλλουσας και της λάμβάνουσας διεργασίας Δεν παρέχει: εγκαθίδρυση σύνδεσης, αξιοπιστία, έλεγχος ροής, έλεγχος συμφόρησης, χρονισμός, ή εγγύηση εύρους ζώνης Q: Γιατί υπάρχει τότε η UDP σύνδεση?
Επίπεδο εφαρμογής 15 Εφαρμογές διαδικτύου: πρωτόκολλα εφαρμογής, μεταφοράς Εφαρμογή Απομακρυσμένη προσπέλαση τερματικού Web Μεταφορά αρχείων Πολυμέσα συνεχούς ροής Διαδικτυακή τηλεφωνία Πρωτόκολλο επιπέδου εφαρμογής SMTP [RFC 2821] Telnet [RFC 854] HTTP [RFC 2616] FTP [RFC 959] Ιδιοταγές (π.χ. RealNetworks) ιδιοταγές (π.χ., Vonage,Dialpad) Πρωτόκολλο μεταφοράς TCP TCP ή UDP συνήθως UDP
Επίπεδο εφαρμογής 16 Κεφάλαιο 2: Επίπεδο εφαρμογής r 2.1 Αρχές εφαρμογών διαδικτύου m Αρχιτεκτονικές εφαρμογων m Απαιτήσεις εφαρμογών r 2.2 Web and HTTP r 2.4 Ηλεκτρονικό Mail m SMTP, POP3, IMAP r 2.5 DNS r 2.6 P2P μεταφορά αρχείων r 2.7 Προγραμματισμός socket με TCP r 2.8 Προγραμματισμός socket με UDP r 2.9 Κατασκευή ενός Web server
Επίπεδο εφαρμογής 17 Web και HTTP Ορολογία r Μία ιστοσελίδα αποτελείται από αντικείμενα (objects) r Ένα Object μπορεί να είναι: HTML file, JPEG image, Java applet, audio file,… r Μία ιστοσελίδα αποτελείται από base HTML-file που περιλαμβάνουν μερικά referenced objects Κάθε object γίνεται addressable από ένα URL Παράδειγμα URL: host name path name
Επίπεδο εφαρμογής 18 HTTP overview HTTP: hypertext transfer protocol r Πρωτόκολλο του Web επιπέδου εφαρμογής r client/server model m client: browser που ζητά, λαμβάνει, “εμφανίζει” Web objects m server: Web server στέλνει objects ως απάντηση σε αιτήματα που λαμβάνει r HTTP 1.0: RFC 1945 r HTTP 1.1: RFC 2068 PC running Explorer Server running Apache Web server Mac running Navigator HTTP request HTTP response
Επίπεδο εφαρμογής 19 HTTP overview (συνέχεια) Χρήση του TCP Ο client: ξεκινά μία TCP σύνδεση: δημιουργεί socket στο server, port 80 Ο server: δέχεται τη TCP σύνδεση από τον client Ανταλλαγή HTTP μηνυμάτων (application-layer protocol messages) μεταξύ browser (HTTP client) & Web server (HTTP server) Κλείσιμο TCP σύνδεσης
Επίπεδο εφαρμογής 20 HTTP overview (συνέχεια) Χρήση του TCP: Ο client ξεκινά μία TCP σύνδεση (δημιουργεί socket) στο server, port 80 Ο server δέχεται τη TCP σύνδεση από τον client Ανταλλαγή HTTP μηνυμάτων (application-layer protocol messages) μεταξύ browser (HTTP client) & Web server (HTTP server) Κλείσιμο TCP connection HTTP δεν διατηρεί πληροφορία σχετικά με την κατάσταση του συστήματος (είναι “stateless”) Ο server δεν διατηρεί πληροφορίες από παλιότερα αιτήματα των clients (requests ) Πρωτόκολλα που διατηρούν καταστάσεις του συστήματος (“state”) είναι περίπλοκα ! Παλιότερη ιστορία (state) πρέπει να διατηρείται & Εάν οι server/client καταρρεύσουν η εικόνα που έχουν για την κατάσταση τους μπορεί να διαφέρει το πρωτόκολλο πρέπει να εξασφαλίσει μια “κοινή” εικόνα
Επίπεδο εφαρμογής 21 HTTP συνδέσεις Nonpersistent HTTP r Το πολύ ένα αντικείμενο στέλνεται πάνω από μία TCP σύνδεση r HTTP/1.0 χρησιμοποιεί nonpersistent HTTP Persistent HTTP Πολλαπλά αντικείμενα μπορούν να σταλούν πάνω από μία TCP σύνδεση μεταξύ client & server r HTTP/1.1 χρησιμοποιεί persistent συνδέσεις σε default κατάσταση
Επίπεδο εφαρμογής 22 Nonpersistent HTTP Υποθέστε ο user βάζει το URL 1a. HTTP client ξεκινάει μια TCP σύνδεση στον HTTP server στο port HTTP client στέλνει HTTP μήνυμα αιτήματος (περιλαμβάνοντας το URL) στο socket της TCP σύνδεσης. Το μύνυμα υποδεικνύει ότι ο client ζητάει το αντικείμενο someDepartment/home.index 1b. HTTP server στο host περιμένει για TCP σύνδεση στο port 80 “δέχεται” τη σύνδεση, ενημερώνοντας τον client 3. HTTP server λαμβάνει το μήνυμα αιτήματος, κατασκευάζει ένα μήνυμα απάντησης περιλαμβάνοντας το ζητούμενο αντικείμενο, & στέλνει τι μήνυμα στο socket time (περιέχει κείμενο, αναφορές σε 10 jpeg εικόνες)
Επίπεδο εφαρμογής 23 Nonpersistent HTTP (συνέχεια) 5. HTTP client λαμβάνει το μήυμα απάντησης που περιέχει το html αρχείο, και το δείχνει. Αναλύοντας το html αρχείο, βρίσκει 10 αναφερόμεναr jpeg αντικείμενα 6. Τα βήματα 1-5 επαναλαμβάνονται για κάθε ένα από τα 10 jpeg αντικείμενα 4. HTTP server κλείνει TCP σύνδεση time
Επίπεδο εφαρμογής 24 Non-Persistent HTTP: Χρόνος απόκρισης Ορισμός του RRT: Χρόνος για να στείλει ένα μικρό πακέτο να ταξιδέψει από τον client στον server και πίσω Χρόνος απόκρισης: r ένα RTT για να ξεκινήσει την TCP σύνδεση r ένα RTT για το HTTP αίτημα και για τα πρώτα bytes τής HTTP απάντησης να επιστρέψει r Χρόνος για να μεταδοθεί το αρχείο σύνολο = 2RTT + χρόνος μετάδοσης χρόνος μετάδοσης ξεκινάει TCP σύνδεση RTT ζητάει αρχείο RTT λήψη αρχείου time
Επίπεδο εφαρμογής 25 Persistent HTTP Nonpersistent HTTP : απαιτεί 2 RTTs ανά αντικείμενα r OS overhead για κάθε TCP σύνδεση r browsers συχνά ανοίγουν παράλληλες TCP συνδέσεις για να φέρουν αναφερόμενα αντικείμενα Persistent HTTP r ο server αφήνει τη σύνδεση ανοιχτή μετά την αποστολή της απάντησης r τα επακόλουθα HTTP μηνύματα μεταξύ ίδιου client/server στέλνονται πάνω από την ανοιχτή σύνδεση Persistent χωρίς pipelining: r ο client εκδίδει νέο αίτημα μόνο όταν η προηγούμενη απάντηση ληφθεί 1 RTT για κάθε αναφερόμενο αντικείμενο Persistent με pipelining: r default στο HTTP/1.1 r ο client στέλνει αιτήματα μόλις αντιμετωπίσει ένα αναφερόμενο αντικείμενο 1 RTT για όλα τα αναφερόμενα αντικείμενα
Επίπεδο εφαρμογής 26 HTTP μήνυμα αιτήματος r δύο τύποι ΗTTP μηνυμάτων: αίτημα, απάντηση r HTTP μήνυμα αιτήματος: m ASCII (format που διαβάζονται από τον άνθρωπο) GET /somedir/page.html HTTP/1.1 Host: User-agent: Mozilla/4.0 Connection: close Accept-language:fr (extra carriage return, line feed) γραμμή αιτήματος (GET, POST, HEAD εντολές) Γραμμές επικεφαλίδων Carriage return, line feed indicates end of message
Επίπεδο εφαρμογής 27 HTTP μήνυμα μηνύματος: γενικό format
Επίπεδο εφαρμογής 28 Μοντελοποίηση Καθυστέρησης Q: Πόσος χρόνος απαιτείται για τη λήψη ενός αντικειμένου από έναν Web server μετά της αποστολή μίας αίτησης; Αγνοώντας τη συμφόρηση, η καθυστέρηση επηρεάζεται από: r την εγκαθίδρυση της TCP σύνδεσης r την καθυστέρηση αποστολής δεδομένων r αργή εκκίνηση Συμβολισμοί, παραδοχές: r Θεωρείστε μία ζεύξη μεταξύ του client και του server ρυθμού R r S: MSS (bits) r O: μέγεθος object (bits) r Δεν υφίστανται επαναπο- στολές(δεν υπάρχουν απώλειες (loss) ή αλλοιώσεις (corruption)) Μέγεθος παραθύρου: r Καταρχάς, θεωρείστε σταθερό παράθυρο συμφόρησης, W segments r Στη συνέχεια, δυναμικό παράθυρο, μοντελοποιώντας την αργή εκκίνηση.
Επίπεδο εφαρμογής 29 Μοντελοποίηση HTTP r Assume Web page consists of: m 1 base HTML page (of size O bits) m M images (each of size O bits) r Non-persistent HTTP: m M+1 TCP connections in series m Response time = (M+1)O/R + (M+1)2RTT + sum of idle times r Persistent HTTP: m 2 RTT to request and receive base HTML file m 1 RTT to request and receive M images m Response time = (M+1)O/R + 3RTT + sum of idle times r Non-persistent HTTP with X parallel connections m Suppose M/X integer. m 1 TCP connection for base file m M/X sets of parallel connections for images. m Response time = (M+1)O/R + (M/X + 1)2RTT + sum of idle times
Επίπεδο εφαρμογής 30 HTTP Response time (in seconds) RTT = 100 msec, O = 5 Kbytes, M=10 and X=5 For low bandwidth, connection & response time dominated by transmission time. Persistent connections only give minor improvement over parallel connections.
Επίπεδο εφαρμογής 31 HTTP Response time (in seconds) RTT =1 sec, O = 5 Kbytes, M=10 and X=5 For larger RTT, response time dominated by TCP establishment & slow start delays. Persistent connections now give important improvement: particularly in high delay bandwidth networks.