1.15k likes | 1.16k Views
Μαρία Παπαδοπούλη Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Χειμερινό εξάμηνο 2008-2009 2.1, 2.2 Web and HTTP. Επίπεδ o Εφαρμογής. ΗΥ335. Γράφουμε προγράμματα τα οποία : Τρέχουν σε διαφορετικά τερματικά συστήματα και επικοινωνούν μέσω δικτύου
E N D
Μαρία Παπαδοπούλη Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Χειμερινό εξάμηνο 2008-2009 2.1, 2.2 Web and HTTP Επίπεδo Εφαρμογής ΗΥ335 Επίπεδο εφαρμογής
Γράφουμε προγράμματα τα οποία: Τρέχουν σε διαφορετικά τερματικά συστήματα και επικοινωνούν μέσω δικτύου Π.χ., το λογισμικό του web server επικοινωνεί με το λογισμικό του browser Λίγο λογισμικό έχει γραφτεί για συσκευές στον πυρήνα του δικτύου Οι συσκευές στον πυρήνα του δικτύου δεν τρέχουν κώδικα εφαρμογής χρήστη Η εφαρμογη στα τερματικά συστήματα επιτρέπει για ραγδαία ανάπτυξη και διάδοση εφραμογών application transport network data link physical application transport network data link physical application transport network data link physical Δημιουργώντας μια δικτυακή εφαρμογή Επίπεδο εφαρμογής
Γενικές αρχιτεκτονικές εφαρμογών • Πελάτη-εξυπηρετητή (client-server) • Διομότιμο σύστημα (peer-to-peer P2P) • Υβριδικό του πελάτη-εξυπηρετητή και του διομότιμου συτήματος Επίπεδο εφαρμογής
Client-server αρχιτεκτονική server: • Συνεχής διαθεσιμότητα (always-on host) • Μόνιμη IP διεύθυνση • Ομάδα από servers (server farms) για κλιμάκωση (scaling) clients: • Επικοινωνούν με τον server • Πιθανότατα χωρίς συνεχή σύνδεση • Πιθανότατα με δυναμικές IP addresses (που λαμβάνουν από έναν DCHP server) • Δεν επικοινωνούν άμεσα ο ένας client με τον άλλον Επίπεδο εφαρμογής
Καθαρή P2P αρχιτεκτονική • Δεν υπάρχει server που να είναι συνεχώς διαθέσιμος • Τυχαία τερματικά συστήματα επικοινωνούν το ένα με το άλλο • Οι peers έχουν διακοπτόμενη σύνδεση στο Ιντερνετ και οι IP διευθύνσεις τους μπορεί να αλλάζουν • Παράδειγμα: Gnutella Ειναι κλιμακώσιμααλλά όχι εύκολο να τα διαχειριστείς Επίπεδο εφαρμογής
Υβριδικό client-server και P2P Skype • Εφαρμογή διαδικτυακής τηλεφωνίας • Εύρεση διεύθυνσης απομακρυσμένου προσώπου: κεντρικοποιημένος server(s) • Η σύνδεση από client σε client είναι άμεση (όχι μέσω server) Άμεση ανταλλαγή μυνημάτων (instant messaging) • Η συνομιλία μεταξύ δύο χρηστών είναι P2P • Εντοπισμός παρουσίας/θέσηςκεντρικοποιημένη: • Ο χρήστης καταχωρεί την IP διευθυνσή του με κεντρικό server όταν μπαίνει online • Ο χρήστης επικοινωνεί με τον κεντρικό server για να βρει τις IP διευθύνσεις των επαφών του Επίπεδο εφαρμογής
Διεργασία:πρόγραμμα που τρέχει σε ένα host Στον ίδιο host: δύο διεργασίες επικοινωνούν μεταξύ τους με διαδεργασιακή επικοινωνία (inter- process communication)(ορίζεται το OS) Διεργασίες σε διαφορετικούς hosts επικοινωνούν με την ανταλλαγή μυνημάτων Διεργασία client: η διεργασία που ξεκινάει την επικοινωνία Διεργασία server : διεργασία που περιμένει για επικοινωνία Διεργασίες που επικοινωνούν • Σημείωση: εφαρμογές με P2P αρχιτεκτονικέςέχουνδιεργασίες client • & server Επίπεδο εφαρμογής
Διεργασία στον δέκτη Ο sender προσδιορίζει τη διεργασία στη συσκευή του δέκτη χρησιμοποιώντας τα παρακάτω δύο στοιχεία: • όνομα ή διεύθυνση της συσκευής • ένα identifier που προσδιορίζει την διεργασία στον δέκτη IP address προσδιορίζει μοναδικά το network interface του δέκτη μοναδικότητα στο Internet Port number Επίπεδο εφαρμογής
host ή server host ή server Ελέγχεται από το σχεδιαστή της εφαρμογής διεργασία διεργασία socket socket Internet Ελέγχεται από το OS TCP με buffers, μεταβλητές TCP με buffers, μεταβλητές Sockets Το socket είναι η διεπαφήμεταξύ του επιπέδου εφαρμογής & επιπέδου μεταφοράς μέσα σε μία συσκευή καθώς επίσης μεταξύ της εφαρμογής & δικτύου • Διεργασίες στέλνουν/λαμβάνουν μηνύματα προς/από socket • Socket μοιάζει με μια “πόρτα” • Η αποστέλουσσα διεργασία στέλνει το μήνυμα έξω από την πόρτα • Η αποστέλλουσα διεργασία υποθέτει υποδομή μεταφοράςπίσω από την πόρτα που φέρνει το μήνυμα στο socket της λαμβάνουσας διεργασίας API - επιλέγει: • Το πρωτόκολλο μεταφοράς • τιμές σε παραμέτρους Επίπεδο εφαρμογής
Για να λάβει μηνύματα η διεργασία πρέπει να έχει έναν identifier Ο host έχει μία μοναδική 32-bit IP διεύθυνση Αρκεί η IP διεύθυνση του host στον οποίο τρέχει η διεργασία για τον προσδιοριμσό της διεργασίας; Aπάντηση:ΌΧΙ, πολλές διεργασίες μπορεί να τρέχουν στον ίδιο host O identifier περιέχει IP διεύθυνση& αριθμούς θυρών (port numbers)της διεργασίας στο host Παραδείγματα αριθμών θυρών: HTTP server: 80 Mail server: 25 Για να στείλουμε ένα HTTP μήνυμαστον gaia.cs.umass.edu web server: IP διεύυθνση: 128.119.245.12 Αριθμός ύρας: 80 Διευθυνσιοδότηση διεργασιών Επίπεδο εφαρμογής
Τύποι μηνυμάτων που ανταλάσσονται π.χ., αίτηση, απάντηση Σύνταξη μηνύματος: Τι πεδία υπάρχουν στο μήνυμα και πως αυτά διαχωρίζονται Σημασιολογία μηνύματος Σημασία της πληροφορίας στα πεδία Κανόνες για το πότε και πως οι διεργασίες στέλνουν & απαντούν σε μηνύματα Πρωτόκολλα δημοσίου τομέα: Ορίζονται σε RFCs Επιτρέπουν διαλειτουργικότητα π.χ., HTTP, SMTP Ιδιοταγή πρωτόκολλα: π.χ., KaZaA Πρωτόκολλα επιπέδου εφαρμογής Επίπεδο εφαρμογής
Απώλεια δεδομένων Κάποιες εφαρμογές (π.χ., ήχου) μπορούν να ανεχθούν κάποιες απώλειες Άλλες εφαρμογές (π.χ., μεταφορά αρχείων, telnet) απαιτούν 100% αξιόπιστη μεταφορά δεδομένων Χρονισμός Κάποιες εφαρμογές (π.χ., διαδικτυακή τηλεφωνία, διαδραστικά παιχνίδια) απαιτούνκαθυστέρησησ για να είναι αποτελεσματικές Τι υπηρεσία μεταφοράς χρειάζεται μία εφαρμογή? Εύρος ζώνης • Κάποιες εφαρμογές (π.χ., πολυμεσικές) απαιτούν κάποιο ελάχιστο εύρος ζώνης για να είναι αποτελεσματικές • Άλες εφαρμογές (“ελαστικές εφαρμογές”) χρησιμοποιούν • οποιοδήποτε εύρος ζώνης είναι • διαθέσιμο Επίπεδο εφαρμογής
Απαιτήσεις υπηρεσίας μεταφοράς για συνήθεις εφαρμογές Απώλεια δεδομένων Καμία απώλεια Καμία απώλεια Καμία απώλεια Ανοχή σε απώλειες Ανοχή σε απώλειες Ανοχή σε απώλειες Καμία απώλεια Ευαισθησία σε καθυστερήσεις όχι όχι όχι ναι, της τάξης των100msec ναι, μερικά secs ναι, της τάξης των 100 msec Ναι και όχι Εφαρμογή Μεταφορά αρχείων e-mail Έγγραφα Web φωνή/video πραγματικού χρόνου Αποθηκευμένη φωνή/video Διαδραστικά παιχνίδια Άμεση ανταλλαγή μηνυμάτων Εύρος ζώνης ελαστική ελαστική ελαστική ήχος: 5kbps-1Mbps video:10kbps-5Mbps Όπως πριν Λίγα kbps πάνω ελαστική Επίπεδο εφαρμογής
TCP υπηρεσία: συνδεσιστρεφής:απαιτείται εγκαθίδρυση μεταξύ διεργασιών των client & server Αξιόπιστη μεταφορά μεταξύ διεργασιών των sender & receiver Έλεγχος ροής:ο sender δεν κατακλύζει τον receiver Έλεγχος συμφόρησης:μειώνει την ροή του sender στην περίπτωση υπερφόρτωσης του δικτύου Δεν παρέχει χρονικές ήελάχιστου bandwidth εγγυήσεις UDP υπηρεσία: Αναξιόπιστη μεταφορά δεδομένωνμεταξύ της αποστέλλουσας και της λάμβάνουσας διεργασίας Δεν παρέχει: εγκαθίδρυση σύνδεσης, αξιοπιστία, έλεγχος ροής, έλεγχος συμφόρησης, χρονισμός, ή εγγύηση εύρους ζώνης Q:Γιατί υπάρχει τότε η UDP σύνδεση? Πρωτόκολλα μεταφοράς υπηρεσιών στο Internet Επίπεδο εφαρμογής
Εφαρμογές διαδικτύου: πρωτόκολλα εφαρμογής, μεταφοράς Πρωτόκολλο επιπέδου εφαρμογής SMTP [RFC 2821] Telnet [RFC 854] HTTP [RFC 2616] FTP [RFC 959] Ιδιοταγές (π.χ. RealNetworks) ιδιοταγές (π.χ., Vonage,Dialpad) Πρωτόκολλο μεταφοράς TCP TCP TCP TCP TCP or UDP typically UDP Εφαρμογή e-mail Απομακρυσμένη προσπέλαση τερματικού Web Μεταφορά αρχείων Πολυμέσα συνεχούς ροής Διαδικτυακή τηλεφωνία Επίπεδο εφαρμογής
2.1 Αρχές εφαρμογών διαδικτύου Αρχιτεκτονικές εφαρμογων Απαιτήσεις εφαρμογών 2.2 Web and HTTP 2.4 Ηλεκτρονικό Mail SMTP, POP3, IMAP 2.5 DNS 2.6 P2P μεταφορά αρχείων 2.7 Προγραμματισμός socket με TCP 2.8 Προγραμματισμός socket με UDP 2.9 Κατασκευή ενός Web server Κεφάλαιο 2: Επίπεδο εφαρμογής Επίπεδο εφαρμογής
www.someschool.edu/someDept/pic.gif path name host name Web και HTTP Ορολογία • Μία web σελίδααποτελείται από αντικείμενα (objects) • Object μπορεί να είναι: HTML file, JPEG image, Java applet, audio file,… • Web page αποτελείται από base HTML-fileπου περιλαμβάνουν μερικά referenced objects • Κάθε object γίνεται addressable από έναURL • Παράδειγμα URL: Επίπεδο εφαρμογής
HTTP: hypertext transfer protocol Web’s πρωτόκολλο επιπέδου εφαρμογής client/server model client: browser που ζητά, λαμβάνει, “displays” Web objects server: Web server στέλνει objects ως απάντηση σε αιτήματα που λαμβάνει HTTP 1.0: RFC 1945 HTTP 1.1: RFC 2068 HTTP overview PC running Explorer HTTP request HTTP response HTTP request Server running Apache Web server HTTP response Mac running Navigator Επίπεδο εφαρμογής
Χρήση του TCP Ο client: ξεκινά μία TCP σύνδεση (δημιουργεί socket) στο server, port 80 Ο server: δέχεται τη TCP σύνδεσηαπό τον client Ανταλλαγή HTTP μηνυμάτων (application-layer protocol messages) μεταξύ browser (HTTP client) & Web server (HTTP server) Κλείσιμο TCP σύνδεσης 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) HTTP overview (συνέχεια) Πρωτόκολλαπου διατηρούν καταστάσεις του συστήματος (“state”)είναι περίπλοκα ! • Παλιότερη ιστορία (state) πρέπει να διατηρείται & • Εάν οι server/client crash ηεικόνα που έχουν για την κατάσταση τους μπορεί να διαφέρει το πρωτόκολο πρέπει να εξασφαλίσει μια “κοινή” εικόνα Επίπεδο εφαρμογής
Nonpersistent HTTP Το πολύ ένα αντικείμενο στέλνεται πάνω από μία TCP σύνδεση HTTP/1.0 χρησιμοποιεί nonpersistent HTTP Persistent HTTP Πολλαπλά αντικείμενα μπορούν να σταλούν πάνω από μία TCP σύνδεση μεταξύ client & server HTTP/1.1 χρησιμοποιεί persistent συνδέσεις σε default κατάσταση HTTP συνδέσεις Επίπεδο εφαρμογής
Υποθέστε ο user βάζει το URLwww.someSchool.edu/someDepartment/home.index 1a.HTTP client ξεκινάει μια TCP σύνδεσηστον HTTP server (διεργασία) @ www.someSchool.edu στο port 80 Nonpersistent HTTP (περιέχει κείμενο, αναφορές σε 10 jpeg εικόνες) 1b.HTTP server στο hostwww.someSchool.edu περιμένει για TCP σύνδεση στο port 80 “δέχεται” τη σύνδεση, ενημερώνοντας τον client 2.HTTP client στέλνει HTTPμήνυμα αιτήματος (περιλαμβάνοντας το URL) στο socket της TCP σύνδεσης.Το μύνυμα υποδεικνύει ότι ο client ζητάει το αντικείμενοsomeDepartment/home.index 3.HTTP server λαμβάνει το μήνυμα αιτήματος, κατασκευάζει έναμήνυμα απάντησηςπεριλαμβάνοντας το ζητούμενο αντικείμενο, & στέλνει τι μήνυμα στο socket time Επίπεδο εφαρμογής
5.HTTP client λαμβάνει το μήυμα απάντησηςπου περιέχει το html αρχείο, και το δείχνει. Αναλύοντας το html αρχείο, βρίσκει 10 αναφερόμεναr jpeg αντικείμενα Nonpersistent HTTP (συνέχεια) 4.HTTP server κλείνει TCP σύνδεση time 6.Τα βήματα 1-5 επαναλαμβάνονται για κάθε ένα από τα 10 jpeg αντικείμενα Επίπεδο εφαρμογής
ξεκινάει TCP σύνδεση RTT ζητάει αρχείο χρόνος μετάδοσης RTT λήψη αρχείου time time Non-Persistent HTTP: Χρόνος απόκρισης Ορισμός του RRT: Χρόνος για να στείλει ένα μικρό πακέτο να ταξιδέψει από τον client στον server και πίσω Χρόνος απόκρισης: • ένα RTT για να ξεκινήσει την TCP σύνδεση • ένα RTT γιατο HTTP αίτημακαι για τα πρώτα bytes τής HTTP απάντησηςνα επιστρέψει • Χρόνος για να μεταδοθεί το αρχείο σύνολο = 2RTT+ χρόνος μετάδοσης Επίπεδο εφαρμογής
Nonpersistent HTTP : απαιτεί 2 RTTs ανά αντικείμενα OS overhead για κάθε TCP σύνδεση browsers συχνά ανοίγουν παράλληλες TCP συνδέσεις για να φέρουν αναφερόμενα αντικείμενα Persistent HTTP ο server αφήνει τη σύνδεση ανοιχτή μετά την αποστολή της απάντησης τα επακόλουθα HTTP μηνύματαμεταξύ ίδιου client/server στέλνονται πάνω από την ανοιχτή σύνδεση Persistent χωρίς pipelining: ο client εκδίδει νέο αίτημαμόνο όταν η προηγούμενη απάντηση ληφθεί 1 RTT γιακάθεαναφερόμενο αντικείμενο Persistent με pipelining: default στο HTTP/1.1 ο client στέλνει αιτήματα μόλις αντιμετωπίσει ένα αναφερόμενο αντικείμενο 1 RTT γιαόλατα αναφερόμενα αντικείμενα Persistent HTTP Επίπεδο εφαρμογής
HTTP μήνυμα αιτήματος • δύο τύποι ΗTTP μηνυμάτων: αίτημα, απάντηση • HTTP μήνυμα αιτήματος: • ASCII (format που διαβάζονται από τον άνθρωπο) γραμμή αιτήματος (GET, POST, HEAD εντολές) GET /somedir/page.html HTTP/1.1 Host: www.someschool.edu User-agent: Mozilla/4.0 Connection: close Accept-language:fr (extra carriage return, line feed) Γραμμές επικεφαλίδων Carriage return, line feed indicates end of message Επίπεδο εφαρμογής
HTTP μήνυμα μηνύματος: γενικό format Επίπεδο εφαρμογής
μίαhost-τοπική, δημιουργημένη από την εφαρμογή, ΟS-ελεγχόμενη διεπαφή (μία “πόρτα”) στην οποία η διεργασία εφαρμογής μπορεί να στείλει και να λάβειμηνύματα προς/απόμία άλλη διεργασία εφαρμογής socket Προγραμματίζοντας με Sockets Στόχος:μάθε πώς να χτίσεις μια client/server εφαρμογή που να επικοινωνεί με sockets Socket API • παρουσιάστηκε στο BSD4.1 UNIX, 1981 • δημιουργήθηκε αναλυτικά, χρησιμοποιήθηκε, γνωστοποιήθηκε αό εφαρμογές • client/server πρότυπο • δύο τύπο υπηρεσίας μεταφοράς μέσω του socket API: • Αναξιόπιστο δεδομενόγραμμα • αξιόπιστο, byte stream-oriented Επίπεδο εφαρμογής
διεργασία διεργασία TCP με buffers, variables TCP με buffers, variables socket socket Προργαμματίζοντας Sockets χρησιμοποιώνταςTCP Socket:μια πόρτα μεταξύ διεργασιών εφαρμογώνκαι end-end-πρωτόκολλο μετάδοσης (UCP ή TCP) TCP υπηρεσία:αξιόπιστη μεταφορά bytesαπό μια διεργασία στην άλλη ελεγχόμενη από τον σχεδιαστή της εφαρμογής ελεγχόμενη από τον σχεδιαστή της εφαρμογής ελεγχόμενη από το λειτουργικό σύστημα ελεγχόμενη από το λειτουργικό σύστημα internet host ή server host ή server Επίπεδο εφαρμογής
Ο client πρέπει να επικοινωνήσει με τον server η server διεργασία πρέπει πρώτα να τρέχει ο server πρέπει να έχει δημιουργήσει ένα socket (πόρτα) που καλωσορίζει την επικοινωνία του client O Client επικοινωνεί με τον server: δημιουργώντας client-τοπικό TCP socket καθορίζοντας IP διεύθυνση, port νούμεροτης server διεργασίας όταν ο client δημιουργεί socket: ο client TCP δημιουργεί σύνδεση στον server TCP Όταν επικοινωνήσει με τον client, ο server TCP δημιουργεί ένα νέο socketγια την server διεργασία να επικοινωνήσει με τον client επιτρέπει στον server να μιλήσει με πολλούς clients port νούμερα πηγών χρησιμοποιούνται για να ξεχωριστούν οι clients (περισσότερα στοΚεφ. 3) TCP provides reliable, in-order transfer of bytes (“pipe”) between client and server application viewpoint Προγραμματίζοντας Sockets με TCP Επίπεδο εφαρμογής
Έναstreamείναι η ακολουθία χαρακτήρων που ρέουν (flow)μέσα σε ή έξω από μια διεργασία. Ένα input streamσυνδέεται με κάποια πηγή εισόδου για την διεργασία, πχ πληκτρολόγιο ή socket. Έναoutput streamσυνδέεται με κάποια πηγή εξόδου, πχ οθόνη ή socket. Ιδιογλωσσία του Stream Επίπεδο εφαρμογής
Παράδειγμα client-server εφαρμογής: 1) o client διαβάζει γραμμή από την standard είσοδο (inFromUser stream) , τη στέλνει στον server μέσω του socket (outToServer stream) 2) ο server διαβάζει γραμμή από το socket 3) server μετατρέπει τη γραμμή σε κεφαλαία, τη στέλνει πίσω στον client 4) o client διαβάζει, τυπώνει την αλλαγμένη γραμμή από το socket (inFromServer stream) Προγραμματίζοντας Sockets με TCP Client process client TCP socket Επίπεδο εφαρμογής
create socket, connect to hostid, port=x create socket, port=x, for incoming request: clientSocket = Socket() welcomeSocket = ServerSocket() TCP connection setup wait for incoming connection request connectionSocket = welcomeSocket.accept() send request using clientSocket read request from connectionSocket write reply to connectionSocket read reply from clientSocket close connectionSocket close clientSocket Client/server socket interaction: TCP Server (running on hostid) Client Επίπεδο εφαρμογής
UDP: no “connection” between client and server no handshaking sender explicitly attaches IP address & port of destination to each packet server must extract IP address, port of sender from received packet UDP: transmitted data may be received out of order, or lost UDP provides unreliable transfer of groups of bytes (“datagrams”) between client & server application viewpoint Socket programming with UDP Επίπεδο εφαρμογής
Client create socket, port=x, for incoming request: serverSocket = DatagramSocket() create socket, clientSocket = DatagramSocket() Create, address (hostid, port=x, send datagram request using clientSocket read request from serverSocket write reply to serverSocket specifying client host address, port number read reply from clientSocket close clientSocket Client/server socket interaction: UDP Server (running on hostid) Επίπεδο εφαρμογής
Example: Java client (UDP) Client process Input: receives packet (recall thatTCP received “byte stream”) Output: sends packet (recall that TCP sent “byte stream”) client UDP socket Επίπεδο εφαρμογής
principles behind transport layer services: multiplexing/demultiplexing reliable data transfer flow control congestion control transport layer protocols in the Internet: UDP: connectionless transport TCP: connection-oriented transport TCP congestion control Chapter 3: Transport Layer Στόχος μας είναι η κατανόηση των: Επίπεδο εφαρμογής
providelogical communication between application processes running on different hosts transport protocols run in end systems send side: breaks app messages into segments passes to network layer receive side: reassembles segments into messages passes to app layer more than one transport protocols available to apps Internet: TCP & UDP application transport network data link physical application transport network data link physical network data link physical network data link physical network data link physical network data link physical network data link physical logical end-end transport Transport services and protocols Επίπεδο εφαρμογής
network layer: logical communication between hosts transport layer: logical communication between processes relies on, enhances, network layer services Household analogy: 12 kids sending letters to 12 kids processes = kids app messages = letters in envelopes hosts = houses transport protocol = Ann and Bill network-layer protocol = postal service Transport vs. network layer Επίπεδο εφαρμογής
unreliable, unordered delivery: UDP no-frills extension of “best-effort” IP reliable, in-order delivery: TCP congestion control flow control connection setup services notavailable: delay guarantees bandwidth guarantees application transport network data link physical application transport network data link physical network data link physical network data link physical network data link physical network data link physical network data link physical logical end-end transport Internet transport-layer protocols Επίπεδο εφαρμογής
Multiplexing at send host: Demultiplexing at rcv host: Multiplexing/demultiplexing delivering received segments to correct socket gathering data from multiple sockets, enveloping data with header (later used for demultiplexing) = socket = process application P4 application application P1 P2 P3 P1 transport transport transport network network network link link link physical physical physical host 3 host 2 host 1 Επίπεδο εφαρμογής
host receives IP datagrams each datagram has source IP address, destination IP address each datagram carries 1 transport-layer segment each segment has source, destination port number host uses IP addresses & port numbers to direct segment to appropriate socket 32 bits source port # dest port # other header fields application data (message) TCP/UDP segment format How demultiplexing works Επίπεδο εφαρμογής
Create sockets with port numbers: DatagramSocket mySocket1 = new DatagramSocket(99111); DatagramSocket mySocket2 = new DatagramSocket(99222); UDP socket identified by two-tuple: dest IP address, dest port number When host receives UDP segment: checks destination port number in segment directs UDP segment to socket with that port number IP datagrams with different source IP addresses and/or source port numbers directed to same socket Connectionless demultiplexing Επίπεδο εφαρμογής
P3 P2 P1 P1 SP: 9157 client IP: A DP: 6428 Client IP:B server IP: C SP: 5775 SP: 6428 SP: 6428 DP: 6428 DP: 9157 DP: 5775 Connectionless demux (cont) DatagramSocket serverSocket = new DatagramSocket(6428); SP provides “return address” Επίπεδο εφαρμογής
TCP socket identified by 4-tuple: source IP address source port number dest IP address dest port number Receive host uses all four values to direct segment to appropriate socket Server host may support many simultaneous TCP sockets: each socket identified by its own 4-tuple Web servers have different sockets for each connecting client non-persistent HTTP will have different socket for each request Connection-oriented demux Επίπεδο εφαρμογής
SP: 9157 SP: 5775 P1 P1 P2 P4 P3 P6 P5 client IP: A DP: 80 DP: 80 Connection-oriented demux (cont) S-IP: B D-IP:C SP: 9157 DP: 80 Client IP:B server IP: C S-IP: A S-IP: B D-IP:C D-IP:C Επίπεδο εφαρμογής
SP: 9157 SP: 5775 P1 P1 P2 P3 client IP: A DP: 80 DP: 80 Connection-oriented demux: Threaded Web Server P4 S-IP: B D-IP:C SP: 9157 DP: 80 Client IP:B server IP: C S-IP: A S-IP: B D-IP:C D-IP:C Επίπεδο εφαρμογής
“no frills,” “bare bones” Internet transport protocol “best effort” service, UDP segments may be: lost delivered out of order to app connectionless: no handshaking between UDP sender, receiver each UDP segment handled independently of others Why is there a UDP? no connection establishment (which can add delay) simple: no connection state at sender, receiver small segment header no congestion control: UDP can blast away as fast as desired UDP: User Datagram Protocol [RFC 768] Επίπεδο εφαρμογής
often used for streaming multimedia apps loss tolerant rate sensitive other UDP uses DNS SNMP reliable transfer over UDP: add reliability at application layer application-specific error recovery! UDP: more 32 bits Length, in bytes of UDP segment, including header source port # dest port # checksum length Application data (message) UDP segment format Επίπεδο εφαρμογής
Sender: treat segment contents as sequence of 16-bit integers checksum: addition (1’s complement sum) of segment contents sender puts checksum value into UDP checksum field Receiver: compute checksum of received segment check if computed checksum equals checksum field value: NO - error detected YES - no error detected. But maybe errors nonetheless? More later …. UDP checksum Goal: detect “errors” (e.g., flipped bits) in transmitted segment Επίπεδο εφαρμογής