Το Επίπεδο Μεταφοράς στο Internet

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

Δίκτυα Επικοινωνίας Υπολογιστών Ενότητα 11: Στρώμα μεταφοράς

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

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

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

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

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

Άσκηση 2. Αν συμβούν 2 duplicate ACKs αντί για timeout τι γίνεται σε αυτή την περίπτωσή;

Δίκτυα Επικοινωνιών. Ενότητα 3: Επίπεδο Μεταφοράς

Σχήμα 1: TCP αποστολέας με παράθυρο αποστολέα = 1

Συνδεσιστρεφής. Υπηρεσίες επιπέδου µεταφοράς Πολύπλεξη και αποπολύπλεξη Ασυνδεσιστρεφής. µεταφορά: TCP

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

Δίκτυα Υπολογιστών Το επίπεδο μεταφοράς (transport layer)

Σημειώσεις Δικτύων Βασικές αρχές πρωτοκόλλων αξιόπιστης μετάδοσης. Από: Chapter 3. προσαρμογή: Α.Ανδρεάτος Δεκ Πρωτόκολλα (κεφ.

Δίκτυα Επικοινωνιών Ι

Δίκτυα Επικοινωνιών Δίκτυα Υπολογιστών και Στρώμα Μεταφοράς Διδάσκοντες: Δρ. Ευγενία Αδαμοπούλου, Δρ. Κώστας Δεμέστιχας

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

Δίκτυα Επικοινωνίας Υπολογιστών Ενότητα 12: Στρώμα μεταφοράς

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

Δίκτυα Επικοινωνιών ΙΙ: Transmission Control Protocol

Κεφάλαιο 3 Επίπεδο Μεταφοράς

Δίκτυα Επικοινωνίας Υπολογιστών Ενότητα 13: Στρώμα μεταφοράς

Κεφάλαιο 3: Επίπεδο Μεταφοράς

ΗΥ335 - Δίκτυα Υπολογιστών Χειμερινό εξάμηνο Φροντιστήριο Ασκήσεις στο TCP

Improving the performance of TCP in the case of packet reordering. Στρατάκη Μαρία

Δίκτυα Υπολογιστών. Ενότητα 4: Μετάδοση δεδομένων από το στρώμα μεταφοράς. Δρ. Χαράλαμπος Ζ. Πατρικάκης Τμήμα Ηλεκτρονικών Μηχανικών Τ.

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

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

Κεφάλαιο 7.3. Πρωτόκολλο TCP

Κεφάλαιο 3: Επίπεδο Μεταφοράς. Κεφάλαιο 3. Υπηρεσίες και πρωτόκολλα µεταφοράς

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

Δίκτυα Υπολογιστών Εμβάθυνση και Ασκήσεις στο Επίπεδο Μεταφοράς και στο Επίπεδο Εφαρμογής Ιωάννης Κορίνθιος Δρ. Ηλεκτρολόγος Μηχανικός ΕΜΠ

Δίκτυα Απευθείας Ζεύξης. Επικοινωνία µεταξύ δύο υπολογιστών οι οποίοι είναι απευθείας συνδεδεµένοι.

Δίκτυα Υπολογιστών Επίπεδο Μεταφοράς Ιωάννης Κορίνθιος Δρ. Ηλεκτρολόγος Μηχανικός ΕΜΠ

Σχήμα 1: TCP αποστολέας με παράθυρο αποστολέα = 1

ΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ. Έλεγχος και Αποφυγή Συμφόρησης στο TCP. Δίκτυα Υπολογιστών

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΙΚΤΥΩΝ

Κεφάλαιο 3: Επίπεδο Μεταφοράς. Κεφάλαιο 3. Υπηρεσίες και πρωτόκολλα µεταφοράς. Στόχοι: επίπεδο µεταφοράς: 3.5 Συνδεσιστρεφής. 3.1 Υπηρεσίες επιπέδου

4.1.1 Πρωτόκολλο TCP - Δομή πακέτου

Transmission Control Protocol. Transmission Control Protocol

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

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή σε Έννοιες των Δικτύων Υπολογιστών Κεφάλαιο 2 Αξιοπιστία Κεφάλαιο 3 Αλγόριθμοι Πολλαπλής Πρόσβασης...

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

ΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ. Έλεγχος και Αποφυγή Συμφόρησης στο TCP. Δίκτυα Υπολογιστών

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

Πρωτόκολλο TCP Διάλεξη Ι

Επίπεδο ύνδεσης Δεδομένων (Data Link Layer DLL)

ΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ. Στρώμα μεταφοράς στο Internet. Δίκτυα Υπολογιστών

Δίκτυα Θεωρία

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

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

Λουκάς Ελευθέριος

ΗΜΥ 654: ίκτυα Υπολογιστών Τελική Εξέταση 8 εκεµβρίου 2004 Η εξέταση αποτελείται από δύο µέρη. Απαντήστε όλες τις ερωτήσεις του Μέρους Ι και 3 από

Πρωτόκολλο TCP Διάλεξη ΙΙI

Δίκτυα Υπολογιστών Ενότητα 5: User Datagram Protocol - UDP

ιαδίκτυα & Ενδοδίκτυα Η/Υ

ΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ. Στρώμα μεταφοράς στο Internet. Δίκτυα Υπολογιστών

ΔΙΑΓΩΝΙΣΜΑ ΤΕΛΙΚΗΣ ΕΠΑΝΑΛΗΨΗΣ ΣΤΙΣ ΕΝΟΤΗΤΕΣ

Τι είναι το πρωτόκολλο Διαδικτύου (Internet Protocol, IP);

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

Δίκτυα Επικοινωνίας Υπολογιστών

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

Το Επίπεδο Ζεύξης (ή Σύνδεσης) Δεδομένων

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ. Έλεγχος και Αποφυγή Συμφόρησης στο TCP. Δίκτυα Υπολογιστών

Δίκτυα Υπολογιστών Ενότητα 4: Transmission Control Protocol - TCP

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

Συνεχής ροή πολυµέσων

1.2.2 Το μοντέλο δικτύωσης TCP/IP 1 / 26

Λύση: Λύση: Λύση: Λύση:

Διάρθρωση. Δίκτυα Υπολογιστών Επικοινωνία από άκρο σε άκρο. Επικοινωνία από άκρο σε άκρο. Διάρθρωση

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δίκτυα Υπολογιστών. Μαρία Παπαδοπούλη. Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

T C P. (Transmission Control Protocol) Αβραάµ Κεβρεκίδης Μανώλης Μελάκης Μάριος Ιακώβου 1

Δίκτυα και Internet στο επιχειρηµατικό περιβάλον

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

Τεχνολογία TCP/IP ΙΑ ΙΚΤΥΩΣΗ- INTERNET. Τεχνολογίες Τηλεκπαίδευσης & Εφαρµογές - Ιούλιος

Αξιόπιστη μεταφορά δεδομένων πάνω από αναξιόπιστο δίκτυο. Κατανεμημένα Συστήματα 1

Αξιόπιστη μεταφορά δεδομένων πάνω από αναξιόπιστο δίκτυο. Κατανεμημένα Συστήματα 1

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δίκτυα Υπολογιστών. Μαρία Παπαδοπούλη. Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

ΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Ασκήσεις για το φυσικό στρώμα. λ από τον ρυθμό μετάδοσής της. Υποθέτοντας ότι ο κόμβος A

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. ίκτυα Υπολογιστών Ι. To Μοντέλο OSI. Αναπλ. Καθηγ. Π. εμέστιχας

Alternating Bit Protocol (ABP)

Έλεγχος συµφόρησης µε το Πρωτόκολλο TCP

ΔΊΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΏΝ ΔΊΚΤΥΑ ΥΠΟΛΟΓΙΣΤΏΝ ΚΑΙ ΣΤΡΏΜΑ ΜΕΤΑΦΟΡΆΣ ΔΙΔΆΣΚΟΝΤΕΣ: ΔΡ. ΕΥΓΕΝΊΑ ΑΔΑΜΟΠΟΎΛΟΥ, ΔΡ. ΚΏΣΤΑΣ ΔΕΜΈΣΤΙΧΑΣ

ΔΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Ασκήσεις για το φυσικό στρώμα

Μάθημα 5: To Μοντέλο Αναφοράς O.S.I.

Στρώμα μεταφοράς στο Internet. Δίκτυα Υπολογιστών

Κεφάλαιο 7 Διαδικτύωση-Internet. 7.2 Τεχνολογία TCP/IP

Κεφάλαιο 1 Το Πρωτόκολλο TCP (Transmission Control Protocol)

Επίπεδο Μεταφοράς (Transport Layer)

Κεφάλαιο 3. Να μάθουμε για τα πρωτόκολλα επιπέδου μεταφοράς του ιαδικτύου: Κατανόηση των αρχών πίσω από τις υπηρεσίες του επιπέδου μεταφοράς:

Άσκηση 1. (σημειώστε πως 1KB = 2 10 bytes, 1Mbps = 10 6 bits/sec).

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

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

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

ΣΕΜΙΝΑΡΙΟ ΔΙΚΤΥΩΝ ΜΑΡΤΙΟΣ ΜΑΙΟΣ 2010 ΔΙΟΡΓΑΝΩΣΗ ΑΜΠΑΡΙΩΤΗΣ ΑΠΟΣΤΟΛΟΣ ΓΙΑΜΜΑΚΗΣ ΓΙΑΝΝΗΣ ΛΕΒΑΝΤΗΣ ΟΔΥΣΣΕΑΣ ΠΑΠΑΔΟΠΟΥΛΟΣ ΜΑΡΙΟΣ ΨΙΑΧΟΣ ΧΡΗΣΤΟΣ

Δίκτυα Επικοινωνίας και Υπολογιστών

ΠΡΩΤΟΚΟΛΛΟ TCP/IP ΜΑΚΡΟΠΟΥΛΟΣ ΝΙΚΟΛΑΟΣ

How do loss and delay occur?

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

Λογισμικό Δικτύων Πέτρος Λάμψας 2007

Transcript:

Το Επίπεδο Μεταφοράς στο Internet Ε Εξάμηνο, Τμήμα Πληροφορικής & Τεχνολογίας Υπολογιστών ΤΕΙ Λαμίας

Δήλωση Οι διαφάνειες βασίζονται στα βιβλία: (1) Computer Networking: A Top Down Approach Featuring the Internet, 3 rd edition, Jim Kurose, Keith Ross, Addison-Wesley, 2004. (2) Internetworking with TCP/IP, Vol. I, Douglas E. Comer, Prentice-Hall, 2000. (3) TCP/IP Tutorial and Technical Overview, Martin W. Murhammer, et. al., International Technical Support Organization, http://www.redbooks.ibm.com

Στόχοι της Ενότητας Κατανόηση αρχών των υπηρεσιών του επιπέδου μεταφοράς: πολύπλεξη, αποπολύπλεξη αξιόπιστη μεταφορά δεδομένων έλεγχος ροής (flow control) έλεγχος συμφόρησης (congestion control) 3 Γνωριμία με τα πρωτόκολλα επιπέδου μεταφοράς στο Internet: UDP: μεταφορά χωρίς σύνδεση TCP: μεταφορά με σύνδεση Έλεγχος συμφόρησης στο TCP

Ορολογία Δικτυακών Εφαρμογών Διεργασία: πρόγραμμα που τρέχει σε ένα σύστημα Μέσα στον ίδιο κόμβο, δύο διεργασίες επικοινωνούν χρησιμοποιώντας Inter- Process Communication IPC (ορίζεται από το ΛΣ) Διεργασίες που τρέχουν σε διαφορετικά συστήματα επικοινωνούν με ένα πρωτόκολλο επιπέδου εφαρμογής 4 Πράκτορας χρήστη (user agent): αλληλεπιδρά με το χρήστη (προς τα «πάνω») και το δίκτυο (προς τα «κάτω») Υλοποιεί τη διεπαφή με το χρήστη και το πρωτόκολλο εφαρμογής Web: browser E-mail: mail reader streaming audio/video: media player

Έννοιες του TCP/IP 5

Επικοινωνία Διεργασιών σε Δίκτυο Η διεργασία στέλνει/ λαμβάνει μηνύματα προς/από την υποδοχή (socket) Socket: Προγραμματιστική διεπαφή (1) επιλογή πρωτοκόλλου μεταφοράς (2) ορισμός παραμέτρων επικοινωνίας host / server process socket TCP με buffers, μεταβλητές Ελέγχεται από τον προγραμματιστή Ελέγχεται από το ΛΣ Internet host / server process socket TCP με buffers, μεταβλητές 6

Τι Υπηρεσία Μεταφοράς Χρειάζεται μια Εφαρμογή; Απώλεια δεδομένων Ορισμένες εφαρμογές (π.χ., ήχος) αντέχουν απώλειες Άλλες εφαρμογές (π.χ., μεταφορά αρχείων, telnet) απαιτούν 100% αξιόπιστη μεταφορά δεδομένων Χρονισμός Ορισμένες εφαρμογές (π.χ., διαδικτυακή τηλεφωνία, διαδραστικά παιχνίδια) απαιτούν χαμηλή καθυστέρηση 7 Εύρος Ζώνης Ορισμένες εφαρμογές (π.χ., πολυμέσα) απαιτούν μια ελάχιστη ποσότητα εύρους ζώνης να είναι διαθέσιμη Άλλες εφαρμογές κάνουν χρήση όσου εύρους ζώνης διαθέτουν

Απαιτήσεις των Εφαρμογών από την Υπηρεσία Μεταφοράς Εφαρμογή Απώλεια Εύρος Ζώνης Ευαισθησία Χρόνου file transfer e-mail Web documents real-time audio/video stored audio/video interactive games instant messaging no loss no loss no loss loss-tolerant loss-tolerant loss-tolerant no loss elastic elastic elastic audio: 5kbps-1Mbps video:10kbps-5mbps same as above few kbps up elastic no no no yes, 100 s msec yes, few secs yes, 100 s msec yes and no 8

Υπηρεσίες Πρωτοκόλλων Μεταφοράς του Internet Υπηρεσία TCP: connection-oriented: απαιτείται εγκατάσταση σύνδεσης μεταξύ πελάτη και εξυπηρετητή αξιόπιστη μεταφορά μεταξύ αποστολέα και παραλήπτη έλεγχος ροής: ο αποστολέας δεν θα κατακλύσει τον παραλήπτη έλεγχος συμφόρησης: αυξομείωση αποστολέα όταν το δίκτυο είναι υπερφορτωμένο δεν παρέχει: χρονισμό, εγγυήσεις ελάχιστου εύρους ζώνης Υπηρεσία UDP: μη-αξιόπιστη μεταφορά δεδομένων μεταξύ διεργασιών αποστολέα και παραλήπτη δεν παρέχει: δημιουργία σύνδεσης, αξιοπιστία, έλεγχο ροής, έλεγχο συμφόρησης, χρονισμό ή εγγυήσεις εύρους ζώνης Ερ: Γιατί υπάρχει το UDP; 9

Πρωτόκολλα Μεταφοράς που Χρησιμοποιούν οι Εφαρμογές Εφαρμογή e-mail απομακρυσμένη πρόσβαση Web μεταφορά αρχείων streaming multimedia Τηλεφωνία στο Internet Πρωτόκολλο Εφαρμογής SMTP [RFC 2821] Telnet [RFC 854] HTTP [RFC 2616] FTP [RFC 959] ιδιωτικό (π.χ. RealNetworks) ιδιωτικό (π.χ., Dialpad) Πρωτόκολλο Μεταφοράς TCP TCP TCP TCP TCP ή UDP τυπικά UDP 10

Υπηρεσίες και Πρωτόκολλα Επιπέδου Μεταφοράς Αξιόπιστη παράδοση, με τη σειρά: TCP έλεγχος συμφόρησης έλεγχος ροής εγκατάσταση σύνδεσης (connection setup) Μη-αξιόπιστη παράδοση, χωρίς σειρά: UDP χωρίς περιττά η επέκταση της βέλτιστης προσπάθειας ( best-effort ) του IP application transport network data link physical Υπηρεσίες που δεν παρέχονται: εγγυήσεις καθυστέρησης 11 εγγυήσεις εύρους ζώνης network data link physical logical end-end transport network data link physical network data link physical network data link physical network data link physical application transport network data link physical

Υποδοχές Berkeley (Berkeley Sockets) 12

Πολύπλεξη/Αποπολύπλεξη Αποπολύπλεξη στον παραλήπτη: Παράδοση των τμημάτων που λαμβάνονται στη σωστή υποδοχή = socket = process Πολύπλεξη στον αποστολέα: Συλλογή δεδομένων από πολλές υποδοχές, τοποθέτηση επικεφαλίδων (αργότερα θα χρησιμοποιηθούν για αποπολύπλεξη) εφαρμογής μεταφοράς δικτύου P3 P1 εφαρμογής μεταφοράς δικτύου P2 ζεύξης δεδομένων φυσικό ζεύξης δεδομένων φυσικό Κόμβος 1 Κόμβος 2 13 P4 εφαρμογής μεταφοράς δικτύου ζεύξης δεδομένων φυσικό Κόμβος 3

Πολύπλεξη/Αποπολύπλεξη Κάθε αριθμός θύρας (port number) είναι ένας ακέραιος 16 bit (από 0-65535) Οι αριθμοί από 0-1023 είναι δεσμευμένοι: προκαθορισμένοι (well-known) αριθμοί θυρών για χρήση από πρωτόκολλα εφαρμογών όπως το ΗΤΤΡ (αριθμός θύρας 80) ή τοftp (21) Ο αριθμός θύρας συσχετίζεται με μια υποδοχή, που με τη σειρά της συνδέεται με μια διεργασία 14

Πως δουλεύει η αποπολύπλεξη Ο κόμβος λαμβάνει αυτοδύναμα πακέτα (ΑΠ) IP κάθε ΑΠ έχει διεύθυνση IP πηγής, και διεύθυνση IP προορισμού κάθε ΑΠ μεταφέρει ένα τμήμα (segment) επιπέδου μεταφοράς κάθε τμήμα έχει αριθμό θύρας πηγής και προορισμού (προκαθορισμένοι αριθμοί θυρών για συγκεκριμένες εφαρμογές) Ο κόμβος χρησιμοποιεί διευθύνσεις ΙΡ & αριθμούς θυρών για να στείλει το τμήμα στην κατάλληλη υποδοχή 32 bits source port # dest port # άλλα πεδία επικεφαλίδας δεδομένα εφαρμογής (message) μορφή τμήματος TCP/UDP 15

Προκαθορισμένες Θύρες (Wellknown ports) Θύρα Πρωτόκολλο Χρήση 21 FTP Μεταφορά αρχείων 23 Telnet Απομακρυσμένη πρόσβαση 25 SMTP E-mail 69 TFTP Trivial File Transfer Protocol 79 Finger Αναζήτηση πληροφοριών για χρήστη 80 HTTP World Wide Web 110 POP-3 Απομακρυσμένη πρόσβαση e-mail 119 NNTP USENET news 16

Αποπολύπλεξη χωρίς σύνδεση I Μια υποδοχή UDP προσδιορίζεται από τη δυάδα (2-tuple): (διεύθυνση IP προορισμού, αριθμός θύρας προορισμού) Όταν ένας κόμβος λαμβάνει ένα τμήμα UDP: ελέγχει τον αριθμό θύρας προορισμού στο τμήμα κατευθύνει το τμήμα UDP στην υποδοχή με αυτόν τον αριθμό θύρας ΑΠ IP συνήθως κατευθύνονται στην ίδια υποδοχή σε εξυπηρετητές χωρίς σύνδεση 17

Αποπολύπλεξη χωρίς σύνδεση II P2 9157 P3 6428 P1 P1 5775 SP: 6428 DP: 9157 SP: 6428 DP: 5775 πελάτης IP: A SP: 9157 DP: 6428 εξυπηρετητής IP: C SP: 5775 DP: 6428 πελάτης IP: B Οι διεργασίες-πελάτες P1 (αριθμός θύρας 5775), P2 (αριθμός θύρας 9157) επικοινωνούν χωρίς σύνδεση με την ίδια διεργασία εξυπηρετητή (Ρ3, με αριθμό θύρας 6428) 18

Αποπολύπλεξη με σύνδεση Ι Μια υποδοχή TCP προσδιορίζεται από μια τετράδα (4-tuple): διεύθυνση IP πηγής αριθμός θύρας πηγής διεύθυνση IP προορισμού αριθμός θύρας προορισμού Ο παραλήπτης χρησιμοποιεί την τετράδα για να στείλει το τμήμα στην κατάλληλη υποδοχή Ένας εξυπηρετητής μπορεί να υποστηρίζει πολλές ταυτόχρονες υποδοχές TCP: 19 κάθε υποδοχή προσδιορίζεται απότηδικήτηςτετράδα Οι εξυπηρετητές Web έχουν διαφορετικές υποδοχές για κάθε πελάτη που συνδέεται το μη επίμονο HTTP θα έχει διαφορετική υποδοχή για κάθε αίτηση

Αποπολύπλεξη με σύνδεση ΙΙ P2 9157 server 80 SP: 9157 DP: 80 πελάτης IP: A εξυπηρετητής IP: C Η διεργασία-πελάτης Ρ2 (αριθμός θύρας 9157) κάνει αίτηση στον εξυπηρετητή που «ακούει» στη θύρα 80 (web server) 20

Αποπολύπλεξη με σύνδεση ΙΙI P2 9157 server 80 P1 P1 5775 SP: 9157 DP: 80 SP: 5775 DP: 80 πελάτης IP: A εξυπηρετητής IP: C πελάτης IP: B Στη συνέχεια και η διεργασία-πελάτης Ρ1 (αριθμός θύρας 5775) κάνει αίτηση στον εξυπηρετητή που «ακούει» στη θύρα 80 21

Αποπολύπλεξη με σύνδεση ΙV P2 9157 Σύνδεση TCP P3 1220 server 80 P1 P1 5775 SP: 1220 DP: 9157 πελάτης IP: A SP: 9157 DP: 1220 εξυπηρετητής IP: C SP: 5775 DP: 80 πελάτης IP: B Ο εξυπηρετητής δημιουργεί αρχικά τη διεργασία παιδί Ρ3 (αριθμός θύρας 1220) η οποία θα αναλάβει την εξυπηρέτηση της διεργασίας Ρ2 22

Αποπολύπλεξη με σύνδεση V P2 9157 Σύνδεση TCP P3 server 80 P4 1220 4330 Σύνδεση TCP P1 P1 5775 SP: 1220 DP: 9157 SP: 4330 DP: 5775 πελάτης IP: A SP: 9157 DP: 1220 εξυπηρετητής IP: C SP: 5775 DP: 4330 πελάτης IP: B Ο εξυπηρετητής δημιουργεί μια δεύτερη διεργασία Ρ4 (αριθμός θύρας 4330). Οι Ρ3 και Ρ4 αναλαμβάνουν την «ταυτόχρονη» εξυπηρέτηση των Ρ2 και Ρ1. O εξυπηρετητής αναμένει την άφιξη νέων αιτήσεων 23

Μεταφορά χωρίς σύνδεση: UDP Στοιχειώδες πρωτόκολλο μεταφοράς του Internet Υπηρεσία best effort, τα τμήματα UDP μπορεί: να χαθούν να παραδοθούν εκτός σειράς στην εφαρμογή χωρίς σύνδεση: χωρίς συμφωνία μεταξύ αποστολέα-παραλήπτη UDP χειρισμός κάθε τμήματος UDP ανεξάρτητα από τα άλλα Γιατί υπάρχει το UDP; χωρίς δημιουργία σύνδεσης (που δημιουργεί καθυστέρηση) απλό: δεν τηρείται κατάσταση σύνδεσης σε αποστολέα και παραλήπτη μικρή επικεφαλίδα τμήματος χωρίς έλεγχο συμφόρησης: το UDP μπορεί να στέλνει όσο γρήγορα απαιτείται/είναι εφικτό 24

UDP: User Datagram Protocol [RFC 768] Συνήθως χρησιμοποιείται για εφαρμογές ροής πολυμέσων (streaming multimedia apps) ανθεκτικές σε απώλειες (loss tolerant) ευαίσθητες στο ρυθμό μεταφοράς (rate sensitive) Άλλες χρήσεις του UDP: DNS SNMP (διαχείριση δικτύου) Αξιόπιστη μεταφορά πάνω από UDP: προσθήκη αξιοπιστίας στο επίπεδο εφαρμογής ανάνηψη από λάθη αναλαμβάνει η εφαρμογή! 25

UDP: User Datagram Protocol μήκος, σε bytes του τμήματος UDP, συμπεριλαμβανομένης της επικεφαλίδας θύρα πηγής μήκος 32 bits Δεδομένα εφαρμογής (message) θύρα προο. checksum μορφή τμήματος UDP 26

UDP Checksum Στόχος: ανίχνευση λαθών (π.χ., αλλαγή τιμών bits) στο τμήμα που μεταδίδεται Αποστολέας: αντιμετώπιση των περιεχομένων του τμήματος ως ακολουθία από ακέραιους 16-bit checksum: πρόσθεση και συμπλήρωμα ως προς 1 των περιεχομένων ο αποστολέας τοποθετεί την τιμή στο πεδίο checksum του UDP 27 Παραλήπτης: υπολογισμός του checksum του τμήματος που λήφθηκε έλεγχος αν το checksum που υπολογίστηκε ισούται με την τιμή του πεδίου checksum: ΟΧΙ ανιχνεύθηκε λάθος, απορρίπτεται το τμήμα ΝΑΙ δεν ανιχνεύθηκε λάθος (ίσως όμως να υπάρχει )

Αρχές της Αξιόπιστης Μεταφοράς Δεδομένων

Αρχές της Αξιόπιστης Μεταφοράς Δεδομένων Σημαντική στα επίπεδα εφαρμογής, μεταφοράς και ζεύξης Ένα από τα 10 πιο σημαντικά ζητήματα των δικτύων! Τα χαρακτηριστικά του μη αξιόπιστου καναλιού θα καθορίσουν την πολυπλοκότητα του πρωτοκόλλου αξιόπιστης μεταφοράς δεδομένων (reliable data transfer protocol (rdt)) 29

Σενάριο Περιγραφής Αξιόπιστης Μεταφοράς Δεδομένων rdt_send(): καλείται από εφαρμογή με παράμετρο δεδομένα που θα σταλούν στο επίπεδο εφαρμογής του παραλήπτη deliver_data(): καλείται από το rdt για να παραδώσει δεδομένα στο ανώτερο επίπεδο αποστολέας παραλήπτης udt_send(): καλείται από το rdt, για να μεταφέρει δεδομένα πάνω από ένα μη αξιόπιστο δίκτυο rdt_rcv(): καλείται όταν πακέτα φτάνουν στον παραλήπτη 30

Μηχανές Πεπερασμένων Καταστάσεων (ΜΠΚ) Μηχανή Πεπερασμένων Καταστάσεων (Finite State Machine FSM): θεωρητικό μοντέλο που περιγράφει τη λειτουργία πρωτοκόλλων Αποτελείται από: κύκλους που αναπαριστούν καταστάσεις (states) και βέλη που αναπαριστούν μεταβάσεις (transitions) μεταξύ των καταστάσεων Οι ετικέτες στις μεταβάσεις δείχνουν τα γεγονότα που προκαλούν τη μετάβαση και την απόκριση σε αυτά 31

Αξιόπιστη Μεταφορά Δεδομένων: Υποθέσεις Θα δημιουργήσουμε σταδιακά τις πλευρές αποστολέα και παραλήπτη του πρωτοκόλλου αξιόπιστης μεταφοράς δεδομένων (reliable data transfer - rdt) Θα θεωρήσουμε κίνηση προς τη μια κατεύθυνση οι πληροφορίες ελέγχου όμως θα είναι αμφίδρομες! Θα γίνει χρήση μηχανών πεπερασμένων καταστάσεων (MΠΚ) για τον καθορισμό αποστολέα, παραλήπτη κατάσταση: όταν μια ΜΠΚ βρίσκεται σε μια κατάσταση η επόμενη κατάσταση καθορίζεται μοναδικά από το επόμενο γεγονός κατ/ση 1 γεγονός που προκαλεί αλλαγή κατάστασης ενέργειες που γίνονται κατά την αλλαγή κατάστασης γεγονός ενέργειες κατ/ση 2 32

rdt1.0: Αξιόπιστη Μεταφορά πάνω από Αξιόπιστο Κανάλι Το κανάλι που χρησιμοποιείται είναι απολύτως αξιόπιστο χωρίς σφάλματα σε bits χωρίς απώλειες πακέτων Ξεχωριστές ΜΠΚ για αποστολέα, παραλήπτη: ο αποστολέας στέλνει δεδομένα στο υφιστάμενο κανάλι ο παραλήπτης διαβάζει δεδομένα από το υφιστάμενο κανάλι αναμονή για κλήση από πάνω rdt_send(data) packet = make_pkt(data) rdt_send(packet) αναμονή για κλήση από κάτω rdt_rcv(packet) extract (packet,data) deliver_data(data) αποστολέας 33 παραλήπτης

rdt2.0: Στα bits μπορεί να συμβούν λάθη στο κανάλι Το κανάλι μπορεί να αλλάξει τιμές των bits στο πακέτο θυμηθείτε: το checksum του UDP ανιχνεύει λάθη σε bit Ερώτηση: πως γίνεται η ανάνηψη από τα λάθη; acknowledgements (ACKs): ο παραλήπτης λέει σαφώς στον αποστολέα ότι το πακέτο παραλήφθηκε σωστά negative acknowledgements (NAKs): ο παραλήπτης λέει σαφώς στον αποστολέα ότι το πακέτο έχει λάθη ο αποστολέας ξαναστέλνει το πακέτο μόλις λάβει NAK Νέοι μηχανισμοί στο rdt2.0 (επιπλέον του rdt1.0): ανίχνευση λαθών ανάδραση από τον παραλήπτη: μηνύματα ελέγχου (ACK,NAK) από παραλήπτη προς αποστολέα 34

rdt2.0: Προδιαγραφές ΜΠΚ rdt_send(data) snkpkt = make_pkt(data, checksum) udt_send(sndpkt) αναμονή για κλήση από πάνω αναμονή για ACK ή NAK rdt_rcv(rcvpkt) && isnak(rcvpkt) udt_send(sndpkt) παραλήπτης rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(nak) rdt_rcv(rcvpkt) && isack(rcvpkt) Λ αποστολέας ACK: επαλήθευση ή αναγνώριση ΝΑΚ: αρνητική επαλήθευση 35 Εισαγωγή (Το διακεκομμένο στο Διαδίκτυο βέλος δείχνει την αρχική κατάσταση) αναμονή για κλήση από κάτω rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ack)

rdt2.0: Λειτουργία χωρίς Λάθη rdt_send(data) snkpkt = make_pkt(data, checksum) udt_send(sndpkt) αναμονή για κλήση από πάνω αναμονή για ACK ή NAK rdt_rcv(rcvpkt) && isnak(rcvpkt) udt_send(sndpkt) Λ: Καμία Ενέργεια rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(nak) rdt_rcv(rcvpkt) && isack(rcvpkt) Λ Δεν στέλνει δεδομένα έως ότου βεβαιωθεί ότι ο παραλήπτης έλαβε ορθά το τρέχον πακέτο: Stop-and-Wait 36 αναμονή για κλήση από κάτω rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ack)

rdt2.0: Λειτουργία με Λάθη rdt_send(data) snkpkt = make_pkt(data, checksum) udt_send(sndpkt) αναμονή για κλήση από πάνω rdt_rcv(rcvpkt) && isack(rcvpkt) Λ αναμονή για ACK ή NAK rdt_rcv(rcvpkt) && isnak(rcvpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(nak) αναμονή για κλήση από κάτω Λ: Καμία Ενέργεια rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ack) 37

Υπάρχει όμως ένα σοβαρό πρόβλημα Τι γίνεται αν αλλοιωθεί το ACK; O αποστολέας δεν ξέρει τι συνέβη στον παραλήπτη! Δεν μπορεί απλά να το ξαναστείλει: πιθανώς θα είναι διπλότυπο (duplicate) Τι κάνουμε; Ο αποστολέας στέλνει ACK/NAK για τα ACK/NAK του παραλήπτη; Τι γίνεται αν αλλοιωθεί το ACK/NAK του αποστολέα; επαναμετάδοση, αυτό όμως μπορεί να προκαλέσει μετάδοση ενός πακέτου που έχει ήδη ληφθεί ορθά Χειρισμός διπλότυπων: Ο αποστολέας βάζει αριθμούς ακολουθίας σε κάθε πακέτο Ο αποστολέας ξαναστέλνει το τρέχον πακέτο αν το ACK/ NAK είναι εσφαλμένο Ο παραλήπτης απορρίπτει (δεν παραδίδει προς τα πάνω) διπλότυπα πακέτα (ίδιο seq #) παύση και αναμονή Ο αποστολέας στέλνει ένα πακέτο, στη συνέχεια περιμένει την απόκριση του παραλήπτη 38

rdt2.1: Αποστολέας με Χειρισμό Προβληματικών ACKs/NAKs Stop-and-Wait: Πακέτα #0 και #1 rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt) Λ rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) isnak(rcvpkt) ) udt_send(sndpkt) rdt_send(data) sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) αναμονή για κλήση 0 από πάνω αναμονή για ACK ή NAK 1 rdt_send(data) 39 αναμονή για ACK ή NAK 0 αναμονή για κλήση 1 από πάνω rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) isnak(rcvpkt) ) udt_send(sndpkt) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt) sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt) Λ

rdt2.1: Παραλήπτης με Χειρισμό Προβληματικών ACKs/NAKs Stop-and-Wait: Πακέτα #0 και #1 rdt_rcv(rcvpkt) && (corrupt(rcvpkt) sndpkt = make_pkt(nak, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq1(rcvpkt) sndpkt = make_pkt(ack, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq0(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ack, chksum) udt_send(sndpkt) αναμονή για 0 από κάτω αναμονή για 1 από κάτω rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ack, chksum) 40 udt_send(sndpkt) rdt_rcv(rcvpkt) && (corrupt(rcvpkt) sndpkt = make_pkt(nak, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq0(rcvpkt) sndpkt = make_pkt(ack, chksum) udt_send(sndpkt)

rdt2.1: Συζήτηση Αποστολέας: Βάζει αριθμό ακολουθίας (sequence number, seq #) στο πακέτο Δύο αριθμοί (0,1) αρκούν Πρέπει να ελέγχει αν το ACK/NAK που λαμβάνει έχει αλλοιωθεί Διπλάσιες καταστάσεις Η κατάσταση πρέπει να «θυμάται» αν το τρέχον πακέτο έχει seq # 0 ή 1 41 Παραλήπτης: Πρέπει να ελέγξει αν το πακέτο που έλαβε είναι διπλότυπο η κατάσταση δείχνει αν το 0 ήτο1 είναι ο αναμενόμενος seq # του πακέτου Σημείωση: ο παραλήπτης δεν μπορεί να γνωρίζει αν το τελευταίο του ACK/NAK παραλήφθηκε ορθά από τον αποστολέα

rdt2.2: Ένα Πρωτόκολλο χωρίς NAK Ίδια λειτουργικότητα με το rdt2.1, με τη χρήση μόνο ACKs Αντί για NAK, ο αποστολέας στέλνει ACK για το τελευταίο πακέτο που έλαβε ορθά ο παραλήπτης πρέπει με σαφήνεια να συμπεριλάβει τον seq # του πακέτου που επαληθεύει Όταν διπλότυπο ACK φτάνει στον αποστολέα αυτός κάνει ότι και στην περίπτωση λήψης NAK: ξαναστέλνει το τρέχον πακέτο 42

rdt2.2: Τμήματα Αποστολέα και Παραλήπτη rdt_rcv(rcvpkt) && (corrupt(rcvpkt) has_seq1(rcvpkt)) udt_send(sndpkt) rdt_send(data) sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) αναμονή για κλήση 0 από πάνω Αναμονή για 0 από κάτω τμήμα ΜΠΚ αποστολέα τμήμα ΜΠΚ παραλήπτη αναμονή για ACK 0 rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) isack(rcvpkt,1) ) udt_send(sndpkt) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt,0) Λ rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) 43 sndpkt = make_pkt(ack1, chksum) udt_send(sndpkt)

rdt3.0: Κανάλια με λάθη και απώλειες Νέα υπόθεση: το κανάλι μπορεί και να χάσει πακέτα (δεδομένα ή ACKs) checksum, seq #, ACKs, επαναμεταδόσεις βοηθούν, δεν είναι όμως αρκετά Ερ: Τι συμβαίνει όταν έχουμε απώλεια; Ο αποστολέας βεβαιώνεται ότι χάθηκαν δεδομένα ή ACK, και τα στέλνει ξανά 44 Προσέγγιση: οαποστολέας περιμένει «λογικό» χρονικό διάστημα για ACK Μεταδίδει ξανά αν δεν το λάβει Αν το πακέτο (ή τοack) απλά καθυστέρησαν: το πακέτο θα είναι διπλότυπο, έχουμε όμως seq #! ο παραλήπτης πρέπει να προσδιορίσει τον seq # του πακέτου που επαληθεύει Απαιτεί ύπαρξη μετρητή

rdt3.0: Αποστολέας rdt_rcv(rcvpkt) Λ rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt,1) stop_timer timeout udt_send(sndpkt) start_timer rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) isack(rcvpkt,0) ) Λ αναμονή για κλήση 0 από πάνω rdt_send(data) sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) start_timer αναμονή για ACK1 45 αναμονή για ΑCK0 αναμονή για κλήση 1 από πάνω rdt_send(data) sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt) start_timer rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) isack(rcvpkt,1) ) Λ timeout udt_send(sndpkt) start_timer rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt,0) stop_timer rdt_rcv(rcvpkt) Λ

rdt3.0: Σε Δράση Ι 46

rdt3.0: Σε Δράση ΙΙ 47

Απόδοση του rdt3.0 Το rdt3.0 δουλεύει, χωρίς όμως καλή απόδοση Παράδειγμα: κύκλωμα 1 Gbps, καθυστέρηση διάδοσης 15 ms (από άκρο σε άκρο), πακέτο 1KB: T transmit = L (πακέτο σε bits) R (ρυθμός μετάδοσης, bps) = 8kb/pkt 10**9 b/sec = 8 microsec U sender = L / R RTT + L / R =.008 30.008 = 0.00027 U sender : χρησιμοποίηση κλάσμα του χρόνου που ο αποστολέας στέλνει ένα πακέτο 1KB pkt κάθε 30 msec -> 33ΚB/sec(!) ωφέλιμο σε κύκλωμα 1 Gbps Το πρωτόκολλο περιορίζει τη χρήση των πόρων του δικτύου! 48

rdt3.0: Λειτουργία Stop-and-Wait αποστολέας παραλήπτης μετάδοση πρώτου bit, t = 0 μετάδοση τελευταίου bit, t = L / R Round Trip Time, RTT άφιξη πρώτου bit πλαισίου άφιξη τελευταίου bit πλαισίου, αποστολή ACK άφιξη ACK, αποστολή επόμενου πλαισίου, t = RTT + L / R U sender = L / R RTT + L / R =.008 30.008 = 0.00027 49

Πρωτόκολλα Συνεχούς Διοχέτευσης (Pipelined Protocols) Τι γίνεται αν επιτρέψουμε στον πομπό να μεταδώσει n πλαίσια πριν να έρθει η επαλήθευση του πρώτου πλαισίου; Αυτό καλείται συνεχής διοχέτευση (pipelining) και αυξάνει τη χρησιμοποίηση του δικτύου Τι γίνεται αν καταστραφεί ένα πλαίσιο και όλα τα άλλα (προηγούμενα και επόμενα) φτάσουν ορθά; Δύο λύσεις: Οπισθοδρόμηση κατά Ν (Go-Back-N) Επιλεκτική Επανάληψη (Selective Repeat) 50

Πρωτόκολλα Συνεχούς Διοχέτευσης Ζητήματα: εφόσον επιτρέπεται η μετάδοση περισσότερων του ενός πακέτων πριν τη λήψη επαληθεύσεων: θα πρέπει να μεγαλώσει το εύρος των αριθμών ακολουθίας (σε αντίθεση με τη λειτουργία stop-andwait) που τοποθετούνται στις επικεφαλίδες των πακέτων αποστολέας και παραλήπτης θα πρέπει να έχουν δυνατότητα προσωρινής αποθήκευσης (buffering) πακέτων (γιατί;) 51

H Συνεχής Διοχέτευση Αυξάνει τη Χρησιμοποίηση του Δικτύου μετάδοση πρώτου bit, t = 0 μετάδοση τελευταίου bit, t=l/r αποστολέας παραλήπτης RTT με κάθε άφιξη ACK, αποστολή επόμενου πλαισίου, t=rtt+l/r άφιξη πρώτου bit πλαισίου άφιξη τελευταίου bit, αποστολή ACK 1 άφιξη τελευταίου bit 2 ου πλαισίου, ACK 2 άφιξη τελευταίου bit 3 ου πλαισίου, ACK 3 Τριπλασιασμός χρησιμοποίησης U sender = 3 * L / R RTT + L / R =.024 30.008 = 0.0008 52

Οπισθοδρόμηση κατά Ν (Go- Back-N) Ι Αποστολέας: k-bit seq # στην επικεφαλίδα του πακέτου Επιτρέπεται «παράθυρο» έως N, συνεχόμενων πακέτων για τα οποία δεν έχει ληφθεί επαλήθευση ACK(n): Επαληθεύει όλα τα πακέτα έως και το seq #n: αθροιστικό ACK (cumulative ACK) Μετρητής για κάθε πακέτο που βρίσκεται σε εκκρεμότητα timeout(n): επαναμετάδοση του πακέτου n και όλων των πακέτων του παραθύρου με seq # > n 53

Οπισθοδρόμηση κατά Ν ΙΙ Παραλήπτης: Σε περίπτωση άφιξη πακέτου εκτός σειράς: απόρριψη (δεν αποθηκεύεται προσωρινά) ο παραλήπτης δεν κρατάει μη αναμενόμενα πακέτα! Αποστολή ACK για το πακέτο με το μεγαλύτερο seq # που έχει ληφθεί ορθά μπορεί να δημιουργήσει διπλότυπα ACKs (δεν υπάρχουν NAKs) χρειάζεται μόνο να αναμένει ένα συγκεκριμένο πακέτο 54

Go-Back-N 55

Επιλεκτική Επανάληψη (Selective Repeat) Ι Ο παραλήπτης επαληθεύει ανεξάρτητα το κάθε πακέτο που έχει λάβει ορθά αποθηκεύει προσωρινά τα πακέτα, προκειμένου να τα παραδώσει με τη σειρά στο ανώτερο επίπεδο Ο αποστολέας ξαναστέλνει μόνο τα πακέτα για τα οποία δεν έχει λάβει ACK μετρητής για κάθε πακέτο που δεν έχει επαληθευτεί Τι καθορίζει το παράθυρο του αποστολέα; N συνεχόμενους seq # το πλήθος των πακέτων που στέλνονται χωρίς ACK 56

Επιλεκτική Επανάληψη: Παράθυρα Αποστολέα και Παραλήπτη 57

Επιλεκτική Επανάληψη ΙΙ αποστολέα ς Δεδομένα από ανώτερο επίπεδο: Αν ο επόμενος διαθέσιμος seq # είναι εντός παραθύρου, στείλε το πακέτο timeout(n): Ξαναστείλε το πακέτο n, επανεκκίνηση μετρητή Το ACK(n) βρίσκεται στο [sendbase, sendbase+n]: Το πακέτο n παρελήφθη ορθά Αν το n είναι ο μικρότερος seq # που δεν έχει επαληθευτεί, προχώρησε τη βάση του παραθύρου στον επόμενο seq # που δεν έχει επαληθευτεί 58 παραλήπτη Το πακέτο ς n στο [rcvbase, rcvbase+n-1] στείλε ACK(n) Εκτός σειράς: αποθήκευση Σε σειρά: παράδοση (επίσης και όσα είχαν αποθηκευτεί και είναι σε σειρά), προχώρησε το παράθυρο στο επόμενο πακέτο που δεν έχει παραληφθεί Το πακέτο n στο [rcvbase-n, rcvbase-1] ACK(n) Αλλιώς, αγνόησε το πακέτο

Επιλεκτική Επανάληψη ΙΙΙ 59

Δίλημμα στην Επιλεκτική Επανάληψη Παράδειγμα: seq #: 0, 1, 2, 3 Μέγεθος παραθύρου=3 Ο παραλήπτης δεν βλέπει διαφορά στις δύο περιπτώσεις! Εσφαλμένα περνάει διπλότυπα δεδομένα ως νέα στο (a) Ερ: ποια η σχέση μεταξύ του πλήθους των seq # και του μεγέθους του παραθύρου; 60

Μεταφορά με Σύνδεση: TCP

Γενική Επισκόπηση του TCP I (RFCs: 793, 1122, 1323, 2018, 2581) Σημείο-προς-σημείο (point-to-point): ένας αποστολέας, ένας παραλήπτης Αξιόπιστη, με τη σειρά ροή δεδομένων (reliable, in-order byte steam): χωρίς όρια στα μηνύματα Συνεχής διοχέτευση (pipelined): ο έλεγχος συμφόρησης και ροής του TCP καθορίζουν το μέγεθος του παραθύρου Buffers αποστολής και λήψης δεδομένων 62

Γενική Επισκόπηση του TCP ΙΙ Πλήρως αμφίδρομα δεδομένα (full duplex data): πλήρως αμφίδρομη ροή δεδομένων στην ίδια σύνδεση MSS: Μέγιστο μέγεθος τμήματος (maximum segment size) Με σύνδεση (connection-oriented): χειραψία (handshaking) = ανταλλαγή μηνυμάτων ελέγχου: αρχικοποιεί την κατάσταση αποστολέα και παραλήπτη πριν την ανταλλαγή δεδομένων Με έλεγχο ροής (flow controlled): ο αποστολέας δεν θα κατακλύσει τον παραλήπτη 63

Δομή Τμήματος TCP 32 bits ACK: έγκυρος ο αριθμός ACK RST, SYN, FIN: για δημιουργία/ τερματισμό σύνδεσης Internet checksum (όπως και στο UDP) source port # dest port # head len sequence number acknowledgement number not used UAP R S F checksum receive window urg data pointer options (variable length) δεδομένα εφαρμογής (μεταβλητού μήκους) για την υλοποίηση της αξιόπιστης μεταφοράς # bytes που είναι σε θέση να λάβει ο παραλήπτης 64

Αριθμοί ακολουθίας και επαλήθευσης στο TCP Αριθμός ακολουθίας: Ο αριθμός ροής πρώτου byte στα δεδομένα του τμήματος (όλαταπροςαποστολήbytes αριθμούνται) ACKs: Αριθμός ακολουθίας του επόμενου byte που αναμένεται από την άλλη πλευρά Αθροιστικές αναγνωρίσεις (cumulative ACK) Ερ: πως χειρίζεται ο παραλήπτης τα εκτός σειράς τμήματα; Aπ: οι τυποποιήσεις του TCP δεν καθορίζουν επαφίεται στην υλοποίηση 65

Αριθμοί ακολουθίας και επαλήθευσης Παράδειγμα Κόμβος Α Κόμβος Β Χρήστης: πληκτρολογεί C Seq=42, ACK=79, data = C Seq=79, ACK=43, data = C Ο Β αναγνωρίζει τη λήψη του C, και στέλνει πίσω το C (piggybacking) Ο Α αναγνωρίζει τη λήψη του C Seq=43, ACK=80 Ένα απλό σενάριο TELNET 66 χρόνος

Λήξη Χρόνου και Χρόνος Round Trip (RTT) στο TCP Ι Ερ: Ποια πρέπει να είναι ητιμήγιατοtimeout; Μεγαλύτερη από το RTT (Round Trip Time) αλλά το RTT μεταβάλλεται Πολύ μικρή: πρώιμες λήξεις χρόνου (timeouts) μη απαραίτητες επαναμεταδόσεις Πολύ μεγάλη: αργή αντίδραση σε απώλειες τμημάτων Ερ: πως υπολογίζεται το RTT; SampleRTT: οχρόνοςαπό τη μετάδοση του τμήματος μέχρι την παραλαβή του ACK 67 αγνοούμε τις επαναμεταδόσεις Το SampleRTT θα μεταβάλλεται, χρειαζόμαστε το εκτιμώμενο RTT «ομαλότερο» χρησιμοποιούμε τις πρόσφατες μετρήσεις και όχι μόνο το τρέχον SampleRTT

Λήξη Χρόνου και Χρόνος Round Trip (RTT) στο TCP ΙΙ Υπολογισμός: EstimatedRTT = (1- α)*estimatedrtt + α*samplertt Εκθετικός με βάρη μεταβαλλόμενος μέσος όρος (Exponential Weighted Moving Average EWMA) Η επίδραση των παλαιότερων δειγμάτων μειώνεται με εκθετικό ρυθμό Τυπική τιμή: α = 0,125 68

Παράδειγμα Υπολογισμού του RTT RTT: gaia.cs.umass.edu to fantasia.eurecom.fr 350 300 RTT (milliseconds) 250 200 150 100 1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106 time (seconnds) 69 SampleRTT Estimated RTT

Λήξη Χρόνου και Χρόνος Round Trip (RTT) στο TCP ΙΙI Υπολογισμός της λήξης χρόνου: EstimatedRTT συν ένα «περιθώριο ασφαλείας» μεγάλη διακύμανση στο EstimatedRTT μεγαλύτερο περιθώριο ασφαλείας Αρχικά υπολογισμός του πόσο το SampleRTT αποκλίνει από το EstimatedRTT: DevRTT = (1-β)*DevRTT + β* SampleRTT-EstimatedRTT (Τυπική τιμή: β = 0.25) Στη συνέχεια το χρονικό διάστημα λήξης χρόνου γίνεται: TimeoutInterval = EstimatedRTT + 4*DevRTT 70

Αξιόπιστη Μεταφορά Δεδομένων (Reliable Data Transfer) To TCP δημιουργεί την υπηρεσία αξιόπιστης μεταφοράς δεδομένων πάνω απότημηαξιόπιστη υπηρεσία του IP Συνεχής διοχέτευση τμημάτων (pipelining) Αθροιστικά (cumulative) acks Το TCP χρησιμοποιεί χρονομετρητή επαναμετάδοσης (retransmission timer) Οι επαναμεταδόσεις προκαλούνται από: γεγονότα λήξης χρόνου διπλότυπα (duplicate) acks Έστω ο απλοποιημένος αποστολέας TCP: αγνοεί διπλότυπα acks δεν παρέχει έλεγχο ροής, έλεγχο συμφόρησης 71

Γεγονότα Αποστολέα TCP Λήψη δεδομένων: Δημιουργία τμήματος με αριθμό ακολουθίας (seq #) Ο seq # είναι ο αριθμός σειράς του πρώτου byte δεδομένων του τμήματος Εκκίνηση μετρητή αν δεν τρέχει ήδη Χρονικό διάστημα εκπνοής: TimeOutInterval timeout: Επαναμετάδοση τμήματος που προκάλεσε τη λήξη χρόνου Επανεκκίνηση μετρητή Λήψη Ack: Αν αναγνωρίζει τμήματα που δεν έχουν αναγνωριστεί: ενημέρωσε ότι είναι γνωστό ότι έχει αναγνωριστεί εκκίνηση μετρητή αν υπάρχουν τμήματα που περιμένουν 72

NextSeqNum = InitialSeqNum SendBase = InitialSeqNum loop (forever) { switch(event) Απλοποιημένος Αποστολέας TCP event: data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(data) event: timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer event: ACK received, with ACK field value of y if (y > SendBase) { SendBase = y if (there are currently not-yet-acknowledged segments) start timer } } /* end of loop 73 forever */

Σενάρια Επαναμετάδοσης Ι Κόμβος A Κόμβος B Κόμβος Α Κόμβος B Seq=92, 8 bytes data Seq=92, 8 bytes data Seq=100, 20 bytes data ACK=120 ACK=100 Seq=92 timeout ACK=100 X timeout απώλεια Seq=92, 8 bytes data Seq=92, 8 bytes data ACK=120 Seq=92 timeout ACK=100 SendBase = 100 χρόνος χαμένο ACK Sendbase = 100 SendBase = 120 74 SendBase = 120 πρόωρη λήξη χρόνου χρόνος

Σενάρια Επαναμετάδοσης ΙΙ SendBase = 120 timeout χρόνος client Seq=92, 8 bytes data απώλεια server Seq=100, 20 bytes data X ACK=120 ACK=100 Αθροιστικό ACK 75 Κάθε φορά που το TCP κάνει μια επανεκπομπή διπλασιάζει την προηγούμενη τιμή Τα διαστήματα αυξάνονται εκθετικά μετά από κάθε επαναμετάδοση Πρόκειται για μια μορφή ελέγχου συμφόρησης Τι μας θυμίζει;

Δημιουργία ACKs στο TCP (RFC 1122, RFC 2581) Γεγονός στον Παραλήπτη Άφιξη τμήματος εντός σειράς με τον αναμενόμενο αριθμό seq. Όλα τα δεδομένα έως εκεί έχουν ACK Άφιξη τμήματος εντός σειράς με τον αναμενόμενο αριθμό seq. Ένα άλλο τμήμα αναμένει ACK Άφιξη τμήματος εκτός σειράς με μεγαλύτερο από τον αναμενόμενο αριθμό seq. Ανίχνευση κενού Άφιξη τμήματος που μερικώς ή εξ ολοκλήρου γεμίζει το κενό Ενέργεια του Παραλήπτη TCP ACK με καθυστέρηση. Αναμονή έως 500ms για το επόμενο τμήμα. Αν δεν υπάρξει επόμενο τμήμα, αποστολή ACK Άμεση αποστολή ενός αθροιστικού ACK, αναγνωρίζοντας και τα δύο τμήματα που ήρθαν με τη σωστή σειρά ΆμεσηαποστολήδιπλότυπουACK, που περιέχει τον αριθμό seq του επόμενου αναμενόμενου byte Άμεση αποστολή ACK, εφόσον το τμήμα ξεκινάει από το κάτω άκρο του κενού 76

Γρήγορη Επαναμετάδοση (Fast Retransmit) Ι Ηπερίοδοςεκπνοής χρόνου συνήθως σχετικά μεγάλη: μεγάλη καθυστέρηση πριν την εκ νέου αποστολή του χαμένου πακέτου Ανίχνευση χαμένων τμημάτων μέσω διπλότυπων ACKs ο αποστολέας συνήθως στέλνει πολλά τμήματα συνεχόμενα αν ένα τμήμα χαθεί, θα υπάρξουν πιθανά πολλά διπλότυπα ACKs Αν ο αποστολέας λάβει 3 διπλότυπα ACKs γιαταίδια δεδομένα, υποθέτει ότι χάθηκε το τμήμα μετά από τα δεδομένα για τα οποία υπάρχει ACK: γρήγορη επαναμετάδοση: αποστολή εκ νέου του τμήματος πριν λήξει ο μετρητής 77

Αλγόριθμος Γρήγορης Επαναμετάδοσης event: ACK received, with ACK field value of y if (y > SendBase) { SendBase = y if (there are currently not-yet-acknowledged segments) start timer } else { increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) { resend segment with sequence number y } ένα διπλότυπο ACK για τμήμα που έχει ήδη ACK γρήγορη επαναμετάδοση 78

Γρήγορη Επαναμετάδοση ΙΙ client server Το πρώτο ACK αναγνωρίζει αθροιστικά τα τμήματα με Seq=55 και 155 Seq=55, 100 bytes data Seq=155, 100 bytes data X απώλεια ACK=255 Seq=255, 100 bytes data Το τμήμα 255 χάνεται Seq=355, 100 bytes data timeout Seq=455, 100 bytes data Τα τμήματα 355, 455 και 555 φτάνουν ορθά στον παραλήπτη, αλλά εκτός σειράς ACK=255 Seq=555, 100 bytes data ACK=255 ACK=255 Seq=255, 100 bytes data 79

Γρήγορη Επαναμετάδοση IIΙ timeout client Seq=55, 100 bytes data Seq=155, 100 bytes data Seq=255, 100 bytes data ACK=255 server απώλεια Seq=355, 100 bytes data Seq=455, 100 bytes data Seq=555, 100 bytes data ACK=255 ACK=255 ACK=255 X Seq=255, 100 bytes data Κάθε τμήμα που φτάνει εκτός σειράς: αποθηκεύεται στο buffer λήψης αναγνωρίζεται (δηλ. στέλνεται ACK ξανά) για το τελευταίο τμήμα πουήρθεμετησειράπου αναμενόταν Στις τρεις συνεχόμενες αφίξεις του ίδιου ACK (μετά την αρχική), ξαναστέλνεται το τμήμα που λείπει (το τμήμα που υποδηλώνεται από τα ACK, στο παράδειγμα το 255) πριν συμβεί λήξη χρόνου 80

Ο Έλεγχος Ροής στο TCP (TCP Flow Control) H πλευρά λήψης της σύνδεσης TCP έχει ένα buffer λήψης: flow control Ο αποστολέας δεν θα υπερχειλίσει την προσωρινή μνήμη (buffer) του παραλήπτη μεταδίδοντας γρήγορα μεγάλο όγκο δεδομένων Η διεργασία εφαρμογής μπορεί να είναι αργή στην ανάγνωση από το buffer 81 Υπηρεσία συνταιριάσματος ταχυτήτων (speed matching): ταίριασμα του ρυθμού αποστολής με το ρυθμό λήψης του παραλήπτη

Ο Έλεγχος Ροής στο TCP: Πως Δουλεύει (Υποθέτουμε ότι ο παραλήπτης TCP απορρίπτει τα εκτός σειράς τμήματα) ελεύθερος χώρος στο buffer = RcvWindow = RcvBuffer-[LastByteRcvd - LastByteRead] Ο παραλήπτης διαφημίζει τον ελεύθερο χώρο βάζοντας την τιμή της RcvWindow στα τμήματα Ο αποστολέας περιορίζει τα χωρίς ACK δεδομένα σε RcvWindow εγγυάται ότι ο χώρος προσωρινής αποθήκευσης λήψης (receive buffer) δεν θα υπερχειλίσει 82

Διαχείριση Σύνδεσης στο TCP Ι Θυμηθείτε: αποστολέας και παραλήπτης TCP, δημιουργούν σύνδεση πριν την ανταλλαγή τμημάτων δεδομένων Αρχικοποίηση μεταβλητών TCP: αριθμοί ακολουθίας (seq. #s) buffers, πληροφορία ελέγχου ροής (π.χ. RcvWindow) client: ξεκινάει τη σύνδεση server: έρχεται σε επαφή μαζί του ο πελάτης 83

Διαχείριση Σύνδεσης στο TCP ΙΙ Τριπλή Χειραψία (Three way handshake): Βήμα 1: ο πελάτης στέλνει τμήμα SYN στον εξυπηρετητή καθορίζει τον αρχικό seq. # δεν περιέχει δεδομένα Βήμα 2: ο εξυπηρετητής λαμβάνει το SYN, αποκρίνεται με ένα τμήμα SYNACK ο εξυπηρετητής εκχωρεί buffers στη σύνδεση καθορίζει τον αρχικό seq. # του εξυπηρετητή Βήμα 3: ο πελάτης λαμβάνει το SYNACK, απαντάει με ένα τμήμα ACK, το οποίο μπορεί να περιέχει δεδομένα 84

Διαχείριση Σύνδεσης στο TCP ΙΙΙ Αίτηση Σύνδεσης client server SYN = 1, seq=client_isn Δημιουργία σύνδεσης SYN=1, seq=server_isn, ack=client_isn+1 ACK SYN=0, seq=client_isn+1, ack=server_isn+1 χρόνος χρόνος 85

Διαχείριση Σύνδεσης στο TCP ΙV Τερματισμός σύνδεσης: Ο πελάτης κλείνει τη σύνδεση (κλήση συστήματος close()) Βήμα 1: ο πελάτης στέλνει ένα τμήμα ελέγχου TCP FIN στον εξυπηρετητή Βήμα 2: ο εξυπηρετητής λαμβάνει το FIN, και αποκρίνεται με ACK. Κλείνει τη σύνδεση, στέλνοντας FIN close() αναμονή κλείσιμο client FIN ACK FIN ACK server 86

Διαχείριση Σύνδεσης στο TCP V Βήμα 3: Ο πελάτης λαμβάνει το FIN, αποκρίνεται με ACK αναμένει θα αποκριθεί με ACK στα FINs που έλαβε Βήμα 4: Ο εξυπηρετητής λαμβάνει το ACK. Η σύνδεση κλείνει (οι πόροι απελευθερώνονται) Σημείωση: με μικρή τροποποίηση μπορεί να χειριστεί ταυτόχρονα FINs αναμονή κλείσιμο client FIN ACK FIN ACK server κλείσιμο 87

88

Ο έλεγχος συμφόρησης στο TCP Έλεγχοςσυμφόρησηςαπόάκροσε άκρο (end-to-end congestion control)

Αρχές του Ελέγχου Συμφόρησης Συμφόρηση: άτυπα: «πολλές πηγές, στέλνουν πολλά δεδομένα, πολύ γρήγορα για τις δυνατότητες χειρισμού που έχει το δίκτυο» Διαφορετική από τον έλεγχο ροής! Συμπτώματα: απώλειες πακέτων (υπερχείλιση των buffers στους δρομολογητές) μεγάλες καθυστερήσεις (αναμονή σε ουρές στους buffers των δρομολογητών) Ένα από τα 10 σημαντικότερα προβλήματα των δικτύων 90

Προσεγγίσεις για τον έλεγχο συμφόρησης Δύο βασικές προσεγγίσεις για τον έλεγχο συμφόρησης: Έλεγχοςσυμφόρησηςαπό άκρο σε άκρο: χωρίς ανάδραση από το δίκτυο η συμφόρηση γίνεται αντιληπτή από τις απώλειες στα τελικά συστήματα και την καθυστέρηση η προσέγγιση που χρησιμοποιεί το TCP Έλεγχος συμφόρησης με βοήθεια από το δίκτυο: οι δρομολογητές παρέχουν ανάδραση στα τελικά συστήματα ένα bit που υποδηλώνει συμφόρηση (SNA, DECbit, TCP/IP ECN, ATM) σαφής ρυθμός με τον οποίο πρέπει να στέλνει ο αποστολέας 91

Ο Έλεγχος Συμφόρησης στο TCP Έλεγχος από άκρο σε άκρο (το ΙΡ δεν παρέχει καμία βοήθεια) Ο αποστολέας περιορίζει τη μετάδοση: LastByteSent-LastByteAcked min{congwin, RcvWindow} Κατά προσέγγιση, ρυθμός = CongWin RTT bytes/sec Το CongWin είναι δυναμικό, συνάρτηση της αντιληπτής συμφόρησης του δικτύου 92 Πως αντιλαμβάνεται τη συμφόρηση ο αποστολέας; Απώλεια = λήξη χρόνου ή 3 διπλότυπα acks Ο αποστολέας TCP μειώνει το ρυθμό (CongWin) μετά από κάθε απώλεια Τρεις μηχανισμοί: Additive Increase Multiplicative Decrease (AIMD) Αργή Εκκίνηση (Slow start) Συντηρητικό μετά από γεγονότα λήξης χρόνου

Additive Increase Multiplicative Decrease (AIMD) στο TCP πολλαπλασιαστική μείωση: μείωσε το CongWin στο μισό μετά από κάθε απώλεια congestion window προσθετική αύξηση: αύξανε το CongWin κατά 1 MSS κάθε RTT όσο δεν υπάρχουν απώλειες: έλεγχος (probing) 24 Kbytes 16 Kbytes 8 Kbytes Σύνδεση TCP μεγάλης 93 διάρκειας time

TCP Slow Start Ι Όταν ξεκινάει η σύνδεση, CongWin = 1 MSS παράδειγμα: MSS = 500 bytes & RTT = 200 msec αρχικός ρυθμός = 20 kbps το διαθέσιμο εύρος ζώνης μπορεί να είναι πολύ μεγαλύτερο από το MSS/RTT επιθυμητή η γρήγορη αύξηση του ρυθμού μετάδοσης Όταν ξεκινάει η σύνδεση, αύξανε το ρυθμό εκθετικά μέχρι την πρώτη απώλεια 94

TCP Slow Start ΙΙ Όταν ξεκινάει η σύνδεση, αύξανε το ρυθμό εκθετικά έως την πρώτη απώλεια: διπλασίασε το CongWin κάθε RTT γίνεται με την αύξηση κατά 1 MSS του CongWin για κάθε ACK που λαμβάνεται Συνεπώς: ο αρχικός ρυθμός είναι αργός, αλλά αυξάνεται με εκθετικό ρυθμό RTT Κόμβος Α Κόμβος Β ένα τμήμα δύο τμήματα τέσσερα τμήματα χρόνος 95

Απώλειες και TCP Ι Μετά από τρία διπλότυπα ACKs: το CongWin διαιρείται δια 2 το παράθυρο αυξάνεται γραμμικά (TCP Reno) Αλλά μετά από λήξη χρόνου: το CongWin παίρνει την τιμή 1 MSS το παράθυρο αυξάνεται εκθετικά έως ένα κατώφλι, στη συνέχεια μεγαλώνει γραμμικά Αιτιολόγηση: 3 διπλότυπα ACKs υποδηλώνουν ότι το δίκτυο είναι σε θέση να παραδώσει κάποια τμήματα ηλήξηχρόνουπριντη λήψη 3 διπλότυπων ACKs είναι «περισσότερο ανησυχητική» 96

Απώλειες και TCP ΙΙ Ε: πότε η εκθετική αύξηση αλλάζει σε γραμμική; A: όταν το CongWin φτάσει στο 1/2 της τιμής που είχε πριν τη λήξη χρόνου Υλοποίηση: congestion window size (segments) Χρήση μεταβλητής Threshold (αρχικά μεγάλη τιμή) Αν συμβεί απώλεια, η Threshold παίρνει τιμή το 1/2 που είχε το CongWin ακριβώς πριν την απώλεια 97 14 12 10 8 6 4 2 0 threshold Threshold TCP Tahoe TCP Reno 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Transmission round Threshold

Περίληψη: Έλεγχος Συμφόρησης στο TCP CongWin < Threshold: ο αποστολέας βρίσκεται στη φάση αργής εκκίνησης, το παράθυρο μεγαλώνει εκθετικά CongWin Threshold: ο αποστολέας βρίσκεται στη φάση αποφυγής συμφόρησης, το παράθυρο μεγαλώνει γραμμικά Όταν ληφθούν 3 διπλότυπα ACKs, η Threshold παίρνει τιμή CongWin/2 και το CongWin παίρνει τιμή Threshold Όταν συμβεί λήξη χρόνου, η Threshold παίρνει τιμή CongWin/2 και το CongWin παίρνει τιμή 1 MSS 98