ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Δίκτυα Υπολογιστών Επίπεδο Μεταφοράς Διδάσκων : Επίκουρος Καθηγητής Ε. Παπαπέτρου
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.
.. Δίκτυα Υπολογιστών Επικοινωνία από άκρο σε άκρο Ευάγγελος Παπαπέτρου Τμ. Μηχ. Η/Υ & Πληροφορικής, Παν. Ιωαννίνων Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 1 / 42
Διάρθρωση.1 Το Επίπεδο Μεταφοράς.2 Το πρωτόκολλο UDP.3 Το πρωτόκολλο TCP Ρεύμα byte και Τμήματα Εγκαθίδρυση και τερματισμός σύνδεσης Μηχανισμός κυλιόμενου παραθύρου Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 2 / 42
Το Επίπεδο Μεταφοράς Διάρθρωση.1 Το Επίπεδο Μεταφοράς.2 Το πρωτόκολλο UDP.3 Το πρωτόκολλο TCP Ρεύμα byte και Τμήματα Εγκαθίδρυση και τερματισμός σύνδεσης Μηχανισμός κυλιόμενου παραθύρου Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 3 / 42
Το Επίπεδο Μεταφοράς Επικοινωνία από άκρο σε άκρο Τα πρωτόκολλα δικτύωσης μέχρι και το επίπεδο δικτύου προδιαγράφουν την επικοινωνία μεταξύ υπολογιστών υπηρεσίας Ζήτημα: η επικοινωνία λαμβάνει χώρα μεταξύ διεργασιών (εφαρμογών) τα δεδομένα παράγονται και καταναλώνονται από τις εφαρμογές Το επίπεδο μεταφοράς (transport layer) είναι υπεύθυνο για την επικοινωνία των διεργασιών. Ένα πρωτόκολλο μεταφοράς ονομάζεται και πρωτόκολλο από άκρο σε άκρο γιατί. προδιαγράφει την επικοινωνία μεταξύ των τελικών προγραμμάτων εφαρμογών. Ρόλος επιπέδου μεταφοράς. Ρόλος του επιπέδου μεταφοράς είναι να μετατρέψει την υπηρεσία παράδοσης πακέτων (δεδομένων) μεταξύ υπολογιστών υπηρεσίας (hosts), την οποία παρέχει ένα δίκτυο, σε ένα. κανάλι επικοινωνίας μεταξύ δύο διεργασιών Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 4 / 42
Το Επίπεδο Μεταφοράς Μηχανισμοί επιπέδου μεταφοράς (1/2) Ένα πρωτόκολλο μεταφοράς πρέπει να προσφέρει επικοινωνία των εφαρμογών με τα χαρακτηριστικά που αυτές προδιαγράφουν όπως: την εγγυημένη παράδοση των μηνυμάτων την παράδοση των μηνυμάτων με τη σωστή σειρά την παράδοση ενός μόνο αντιγράφου για κάθε μήνυμα την παράδοση μηνυμάτων χωρίς περιορισμό μεγέθους την απόρριψη μηνυμάτων με μεγάλη καθυστέρηση τον έλεγχο ροής στην επικοινωνία, κα Η επικοινωνία των εφαρμογών θα πρέπει να είναι ανεπηρέαστη από τους περιορισμούς του υποκείμενου δικτύου το δίκτυο μπορεί να μην υποστηρίζει συγκεκριμένες υπηρεσίες, π.χ. η παράδοση των πακέτων μπορεί να μην είναι εγγυημένη Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 5 / 42
Το Επίπεδο Μεταφοράς Μηχανισμοί επιπέδου μεταφοράς (2/2) Πρόκληση: η ανάπτυξη μηχανισμών που θα μετατρέπουν τα μη επιθυμητά χαρακτηριστικά του υποκείμενου δικτύου στο επίπεδο υπηρεσιών που απαιτούν οι εφαρμογές. Στις περισσότερες περιπτώσεις το πρόβλημα είναι η αναξιόπιστη λειτουργία του υποκείμενου δικτύου, επομένως μπορούμε να θεωρήσουμε ότι στόχος του επιπέδου μεταφοράς είναι η δημιουργία ενός αξιόπιστου καναλιού επικοινωνίας όταν αυτό είναι. επιθυμητό από τις εφαρμογές Το επίπεδο μεταφοράς θα πρέπει επίσης να επιτρέπει την από κοινού χρήση των υπηρεσιών του δικτύου από πολλές διεργασίες για το σκοπό αυτό απαιτείται: η διευθυνσιοδότηση των διεργασιών (addressing) και η πολύπλεξη/αποπολύπλεξη των μηνυμάτων (multiplexing/demultiplexing) διαφορετικών διεργασιών Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 6 / 42
Το Επίπεδο Μεταφοράς Πρωτόκολλα μεταφοράς και Διαδίκτυο (1/2) Ένα πρωτόκολλο μεταφοράς πρέπει να υλοποιεί υποχρεωτικά τη διευθυνσιοδότηση των διεργασιών και την πολύπλεξη/αποπολύπλεξη των δεδομένων Η υλοποίηση επιπλέον μηχανισμών, που βελτιώνουν τα χαρακτηριστικά της επικοινωνίας, είναι προεραιτική κάθε πρωτόκολλο μεταφοράς επιλέγει τους μηχανισμούς που θα υλοποιήσει και επομένως τις υπηρεσίες που θα προσφέρει η επιλογή είναι ένας συμβιβασμός μεταξύ των χαρακτηριστικών της απαιτούμενης υπηρεσίας και της πολυπλοκότητας υλοποίησης Ορισμένοι μηχανισμοί υλοποιούνται από τις ίδιες τις εφαρμογές ώστε να μειωθεί η πολυπλοκότητα και να ενισχυθεί η ευελιξία ένα απλούστερο πρωτόκολλο μεταφοράς μπορεί να μην ικανοποιεί πλήρως αλλά να είναι συμβατό με περισσότερες εφαρμογές Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 7 / 42
Το Επίπεδο Μεταφοράς Πρωτόκολλα μεταφοράς και Διαδίκτυο (2/2) Στο Διαδίκτυο δύο είναι τα σημαντικότερα πρωτόκολλα μεταφοράς το πρωτόκολλο Αυτοδύναμων Πακέτων Χρήστη (User Datagram Protocol, UDP) προσφέρει την απλούστερη υπηρεσία μεταφοράς δεδομένων με χαμηλή πολυπλοκότητα το πρωτόκολλο Ελέγχου Μετάδοσης (Transmission Control Protocol, TCP) προσφέρει αξιόπιστη επικοινωνία μεταξύ διεργασιών με αντάλλαγμα την πολυπλοκότητα υλοποίησης. Στα δίκτυα IP προδιαγράφονται και άλλα πρωτόκολλα που προσφέρουν εξειδικευμένες υπηρεσίες μεταφοράς, όπως τα Real Time Protocol (RTP), Stream Control Transmission Protocol (SCTP),. κλπ Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 8 / 42
Το πρωτόκολλο UDP Διάρθρωση.1 Το Επίπεδο Μεταφοράς.2 Το πρωτόκολλο UDP.3 Το πρωτόκολλο TCP Ρεύμα byte και Τμήματα Εγκαθίδρυση και τερματισμός σύνδεσης Μηχανισμός κυλιόμενου παραθύρου Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 9 / 42
Το πρωτόκολλο UDP Εισαγωγή Το πρωτόκολλο User Datagram Protocol (UDP) προσφέρει την απλούστερη υπηρεσία μεταφοράς δεδομένων μεταξύ διεργασιών υλοποιεί μόνο την πολύπλεξη/αποπολύπλεξη δεδομένων καθιστά διαθέσιμες τις αναξιόπιστες υπηρεσίες ενός δικτύου IP στις εφαρμογές Το UDP δεν προσφέρει κανενός είδους αξιοπιστία στη μετάδοση δεδομένων οι μηχανισμοί για αξιόπιστη μετάδοση πρέπει να υλοποιηθούν από τις ίδιες τις εφαρμογές Το UDP χαρακτηρίζεται από χαμηλή πολυπλοκότητα και υψηλή ευελιξία Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 10 / 42
Το πρωτόκολλο UDP Διευθυνσιοδότηση διεργασιών Κάθε διεργασία σε ένα υπολογιστή υπηρεσίας προσδιορίζεται μοναδικά από έναν ακέραιο αριθμό που ονομάζεται θύρα (port) η θύρα ονομάζεται αλλιώς γραμματοκιβώτιο (mailbox): μια διεργασία μπορεί να στείλει δεδομένα σε μια θύρα και η διεργασία παραλήπτης να διαβάσει τα δεδομένα από τη συγκεκριμένη θύρα Οι διεργασίες σε διαφορετικούς υπολογιστές προσδιορίζονται από το ζεύγος τιμών <διεύθυνση IP υπολογιστή, θύρα> αυτό το ζεύγος τιμών αποτελεί το κλειδί αποπολύπλεξης (demultiplexing key). Η θύρα είναι ένας αριθμός με μήκος 16 bit, επομένως σε κάθε υπολογιστή υπηρεσίας. μπορούν να προσδιοριστούν μονοσήμαντα μέχρι 64000 διεργασίες Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 11 / 42
Το πρωτόκολλο UDP Μετάδοση πληροφορίας Οι θύρες αποστολέα και παραλήπτη μεταφέρονται στην κεφαλίδα του πακέτου UDP ώστε να είναι δυνατή: η παράδοση του μηνύματος στον παραλήπτη η απάντηση του παραλήπτη στον αποστολέα Το πακέτο UDP μεταφέρει δεδομένα μεταβλητού μεγέθους και ενθυλακώνεται σε ένα πακέτο IP. το πεδίο Μήκος (Length) στην Example. κεφαλίδα προσδιορίζει το μέγεθος του πακέτου UDP Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 12 / 42.
Το πρωτόκολλο UDP Μηχανισμοί ανάθεσης θυρών Προϋπόθεση για έναρξη επικοινωνίας: η διεργασία που ενεργοποιεί την επικοινωνία (πελάτης, client) να μάθει τη θύρα της διεργασίας αποδέκτη της επικοινωνίας (διακομιστής, server) η διεργασία διακομιστής μπορεί να μάθει τη θύρα της διεργασίας πελάτη καθώς αυτή περιέχεται στα μηνύματα από τον πελάτη Υπάρχουν τρεις διαφορετικές προσεγγίσεις: ο διακομιστής δέχεται μηνύματα σε μια προκαθορισμένη θύρα (ευρέως γνωστή θύρα, well known port) υπάρχουν προκαθορισμένες θύρες για συγκεκριμένες εφαρμογές, π.χ. θύρα 25 για μηνύματα αλληλογραφίας ο διακομιστής δέχεται μηνύματα σε μια ευρέως γνωστή θύρα και στη συνέχεια η επικοινωνία γίνεται σε νέα θύρα που συμφωνείται μια διεργασία αντιστοιχιστή θυρών (port mapper) δέχεται μηνύματα σε μια μοναδική θύρα και προσδιορίζει τη θύρα επικοινωνίας ανάλογα με την εφαρμογή Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 13 / 42
Το πρωτόκολλο UDP Αποπολύπλεξη δεδομένων Κάθε υπολογιστής διατηρεί μια ουρά για κάθε διεργασία που επικοινωνεί μέσα από το δίκτυο στην ουρά αποθηκεύονται τα λαμβανόμενα πακέτα ώστε να είναι διαθέσιμα για ανάγνωση από τη διεργασία η ανάγνωση των πακέτων γίνεται με την τεχνική FIFO Τα λαμβανόμενα πακέτα τοποθετούνται στην κατάλληλη ουρά ανάλογα με τη θύρα προορισμού Δεν υπάρχει κάποιος μηχανισμός ελέγχου ροής πακέτα μπορεί να χαθούν λόγω υπερχείλισης των ουρών αποθήκευσης Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 14 / 42
Το πρωτόκολλο UDP Έλεγχος ορθής παράδοσης Το UDP παρέχει τη δυνατότητα ελέγχου τη ορθότητας ενός πακέτου που παραδόθηκε μέσω της χρήσης του αθροίσματος ελέγχου (checksum) Το άθροισμα ελέγχου υπολογίζεται με βάση: την κεφαλίδα του UDP τα δεδομένα του πακέτου UDP ένα στοιχείο που αποκαλείται ψευδοξεφαλίδα Η ψευδοκεφαλίδα αποτελείται από: τον αριθμό πρωτοκόλλου της κεφαλίδας IP τις διευθύνσεις IP αποστολέα και παραλήπτη το πεδίο μήκους του UDP Η χρήση της ψευδοκεφαλίδας στο άθροισμα ελέγχου έχει στόχο να πιστοποιήσει ότι το πακέτο παραδόθηκε μεταξύ των σωστών άκρων επικοινωνίας Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 15 / 42
Διάρθρωση.1 Το Επίπεδο Μεταφοράς.2 Το πρωτόκολλο UDP.3 Το πρωτόκολλο TCP Ρεύμα byte και Τμήματα Εγκαθίδρυση και τερματισμός σύνδεσης Μηχανισμός κυλιόμενου παραθύρου Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 16 / 42
Εισαγωγή (1/2) Το πρωτόκολλο Transmission Control Protocol (TCP) παρέχει μια αξιόπιστη, συνδεσμοστρεφή (connection-oriented) επικοινωνία μεταξύ διεργασιών Η συνδεσμοστρεφής προσέγγιση είναι απαραίτητη ώστε πέρα από τη αξιόπιστη μετάδοση να εξασφαλιστούν: η εν σειρά παράδοση των δεδομένων η αποφυγή παράδοσης διπλότυπων μηνυμάτων Το TCP είναι πλήρως αμφίδρομο (full-duplex) πρωτόκολλο κάθε σύνδεση υποστηρίζει την ταυτόχρονη μετάδοση δεδομένων και προς τις δύο κατευθύνσεις Χρησιμοποιείται ο ίδιος μηχανισμός αποπολύπλεξης όπως και στο UDP Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 17 / 42
Εισαγωγή (2/2) Κεντρική ιδέα: χρήση του μηχανισμού κυλιόμενου παραθύρου για την αξιόπιστη μετάδοση δεδομένων πάνω από το αναξιόπιστο διαδίκτυο κατ αναλογία με την αξιόπιστη μετάδοση πάνω από έναν αναξιόπιστο σύνδεσμο Η συμπεριφορά ενός διαδικτύου είναι εξαιρετικά πολύπλοκη και διαφορετική από αυτή ενός συνδέσμου ο μηχανισμός του κυλιόμενου παραθύρου απαιτεί σημαντικές τροποποιήσεις ώστε να λειτουργήσει σωστά Η πολυπλοκότητα ενός διαδικτύου επιβάλλει επίσης την ενσωμάτωση στο TCP: ενός μηχανισμού ελέγχου ροής (flow control) ενός μηχανισμού ελέγχου συμφόρησης (congestion control) Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 18 / 42
Ζητήματα επικοινωνίας από άκρο σε άκρο (1/2) Ένας μηχανισμός εγκαθίδρυσης της σύνδεσης μεταξύ δύο διεργασιών είναι απαραίτητος εγκαθίδρυση σύνδεσης: ο μηχανισμός μέσω του οποίου οι διεργασίες συμφωνούν σε κάποια κατάσταση εκκίνησης του αλγόριθμου κυλιόμενου παραθύρου αναγκαιότητα εγκαθίδρυσης: η σύνδεση μπορεί να αφορά οποιουσδήποτε υπολογιστές στο διαδίκτυο Ο προσδιορισμός του χρόνου αναμονής (timeout) πρέπει να είναι προσαρμοστικός η καθυστέρηση RTT μπορεί να είναι διαφορετική μεταξύ διαφορετικών συνδέσεων ή ακόμα και μεταβαλλόμενη στη διάρκεια μιας σύνδεσης αποτυχία σωστού προσδιορισμού του χρόνου αναμονής μπορεί να οδηγήσει σε σπατάλη του εύρους ζώνης ή σε εμφάνιση διπλοτύπων Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 19 / 42
Ζητήματα επικοινωνίας από άκρο σε άκρο (2/2) Το TCP πρέπει να αντιμετωπίζει πακέτα που φτάνουν στον παραλήπτη με πολύ μεγάλη καθυστέρηση επειδή το IP απορρίπτει πακέτα όταν o χρόνος ζωής (TTL) μηδενιστεί, το TCP καθορίζει για κάθε πακέτο μια μέγιστη διάρκεια ζωής τμήματος (maximum segment lifetime, MSL) επειδή ο χρόνος MSL είναι μια εκτίμηση, πακέτα μπορούν να φτάσουν μετά από αυτό το χρόνο και να μπερδέψουν τον παραλήπτη Ο έλεγχος ροής είναι ιδιαίτερα σημαντικός καθώς η ποσότητα των πόρων που διατίθενται για κάθε σύνδεση είναι ευμετάβλητη εξαρτάται άμεσα από το μεγάλο πλήθος των συνδέσεων TCP που ο παραλήπτης μπορεί να υποστηρίζει ταυτόχρονα Είναι απαραίτητη η ενσωμάτωση ενός μηχανισμού ελέγχου συμφόρησης ο ρυθμός αποστολής πρέπει να επιλέγεται ώστε να μην δημιουργεί συμφόρηση στο δίκτυο με κίνδυνο την απώλεια πακέτων Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 20 / 42
Ρεύμα byte και Τμήματα Διάρθρωση.1 Το Επίπεδο Μεταφοράς.2 Το πρωτόκολλο UDP.3 Το πρωτόκολλο TCP Ρεύμα byte και Τμήματα Εγκαθίδρυση και τερματισμός σύνδεσης Μηχανισμός κυλιόμενου παραθύρου Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 21 / 42
Ρεύμα byte και Τμήματα Ροή πληροφορίας και Τμήματα Το πρωτόκολλο TCP είναι ένα πρωτόκολλο προσανατολισμένο σε byte και επομένως μεταφέρει τα δεδομένα ως ένα ρεύμα byte (byte stream) η διεργασία αποστολέας αποστέλλει μια συνεχόμενη σειρά από bytes και η διεργασία παραλήπτης διαβάζει την ίδια σειρά από bytes το πρωτόκολλο TCP είναι υπεύθυνο για την τμηματοποίηση της πληροφορίας σε πακέτα και την ανασύνθεση του αρχικού ρεύματος byte Τα πακέτα TCP ονομάζονται τμήματα (segments) κάθε πακέτο μεταφέρει ένα τμήμα του αρχικού ρεύματος byte Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 22 / 42
Ρεύμα byte και Τμήματα Μορφή τμήματος (1/2) Τα πεδία θύρα προέλευσης (SrcPort) και θύρα προορισμού (DstPort) καθορίζουν τα άκρα της επικοινωνίας Ο αλγόριθμος κυλιόμενου παραθύρου χρησιμοποιεί τα πεδία: αριθμός ακολουθίας (SequenceNum): περιέχει τον αριθμό ακολουθίας του πρώτου byte που μεταφέρεται στο TCP κάθε byte έχει έναν ακολουθιακό αριθμό επιβεβαίωση (Acknowledgment): περιέχει τον αριθμό ακολουθίας στον οποίο αναφέρεται μια επιβεβαίωση αναγγελθέν παράθυρο (AdvertisedWindow) Ο αριθμός ακολουθίας χρησιμοποιείται στην κατεύθυνση μετάδοσης των δεδομένων η επιβεβαίωση και το αναγγελθέν παράθυρο χρησιμοποιούνται στην αντίθετη κατεύθυνση Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 23 / 42
Ρεύμα byte και Τμήματα Μορφή τμήματος (2/2) Το πεδίο σημαίες (Flags) προσδιορίζει πακέτα ελέγχου του TCP SYN (synchronize): χρησιμοποιείται στην εγκαθίδρυση μιας σύνδεσης FIN (finish): χρησιμοποιείται στον τερματισμό μιας σύνδεσης RESEΤ: χρησιμοποιείται για την επανεκκίνηση μιας σύνδεσης μετά από περιπτώσεις σφαλμάτων ACK: χρησιμοποιείται για να δηλώσει ένα πακέτο επιβεβαίωσης PUSH: δηλώνει ότι τα δεδομένα στάλθηκαν από τον αποστολέα με τη λειτουργία ώθησης (push) Άθροισμα ελέγχου (Checksum): χρησιμοποιείται για τον έλεγχο ορθότητας ενός ληφθέντος πακέτου όπως και στο UDP Μήκος κεφαλίδας (HdrLen): δηλώνει το μέγεθος της κεφαλίδας σε λέξεις των 32 bit Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 24 / 42
Εγκαθίδρυση και τερματισμός σύνδεσης Διάρθρωση.1 Το Επίπεδο Μεταφοράς.2 Το πρωτόκολλο UDP.3 Το πρωτόκολλο TCP Ρεύμα byte και Τμήματα Εγκαθίδρυση και τερματισμός σύνδεσης Μηχανισμός κυλιόμενου παραθύρου Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 25 / 42
Εγκαθίδρυση και τερματισμός σύνδεσης Εισαγωγή Η ανταλλαγή δεδομένων στο TCP μπορεί να γίνει μετά την εγκαθίδρυση της σύνδεσης (connection setup) Σκοπός: τα δύο άκρα επικοινωνίας πρέπει να συμφωνήσουν σε ένα σύνολο παραμέτρων στην περίπτωση του TCP οι παράμετροι είναι οι εναρκτήριοι αριθμοί ακολουθίας Η εγκαθίδρυση της σύνδεσης γίνεται με τον αλγόριθμο τριπλής χειραψίας (threeway handshake) η διαδικασία ξεκινά από τον πελάτη (ασύμμετρη διαδικασία) Η διαδικασία τερματισμού της σύνδεσης πρέπει να ξεκινήσει από κάθε άκρο ξεχωριστά (συμμετρική διαδικασία) σκοπός: η αποδέσμευση των πόρων του συστήματος κάθε άκρο τερματίζει τη δική του κατεύθυνση της σύνδεσης (δεν επιθυμεί να στείλει άλλα δεδομένα) Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 26 / 42
Εγκαθίδρυση και τερματισμός σύνδεσης Τριπλή χειραψία (1/2) Ο αλγόριθμος περιλαμβάνει την ανταλλαγή τριών μηνυμάτων μεταξύ του πελάτη και του διακομιστή ο πελάτης στέλνει ένα μήνυμα SYN με τον αρχικό αριθμό ακολουθίας που θα χρησιμοποιήσει ο διακομιστής απαντά με ένα μήνυμα (ACK+SYN) που: επιβεβαιώνει τον αριθμό ακολουθίας του πελάτη δηλώνει τον εναρκτήριο αριθμό ακολουθίας του διακομιστή ο πελάτης απαντά με ένα μήνυμα που επιβεβαιώνει (ACK) τον αριθμό ακολουθίας του διακομιστή. Στο TCP μια επιβεβαίωση προσδιορίζει τον επόμενο αριθμό ακολουθίας που αναμένεται και με αυτό τον τρόπο επιβεβαιώνει σιωπηρά όλους τους. προηγούμενους αριθμούς ακολουθίας Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 27 / 42
Εγκαθίδρυση και τερματισμός σύνδεσης Τριπλή χειραψία (2/2) Η ανταλλαγή των αριθμών ακολουθίας μεταξύ πελάτη - διακομιστή είναι απαραίτητη γιατί οι αριθμοί ακολουθίας επιλέγονται τυχαία Στόχος τυχαίας επιλογής: δύο διαφορετικές συνδέσεις που χρησιμοποιούν τις ίδιες θύρες σε κοντινές χρονικές στιγμές να χρησιμοποιούν διαφορετικούς ακολουθιακούς αριθμούς αν χρησιμοποιηθούν οι ίδιοι ακολουθιακοί αριθμοί υπάρχει περίπτωση να εμφανιστούν παλιά πακέτα από τη μια σύνδεση κατά τη διάρκεια της άλλης Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 28 / 42
Εγκαθίδρυση και τερματισμός σύνδεσης Τερματισμός σύνδεσης (1/2) Ο τερματισμός μιας σύνδεσης από μια διεργασία ξεκινά με την αποστολή ενός μηνύματος FIN κάθε διεργασία πρέπει να τερματίσει ξεχωριστά το δικό της μισό της σύνδεσης Αν μια διεργασία λάβει ένα μήνυμα FIN τότε επιβεβαιώνει τη λήψη του με ένα μήνυμα ACK ή με ένα μήνυμα FIN αν δεν έχει στείλει ήδη το μήνυμα FIN και επιθυμεί τον τερματισμό και του δικού της μισού της σύνδεσης Αν μια διεργασία έστειλε το μήνυμα FIN αφού είχε λάβει αντίστοιχο μήνυμα FIN μπορεί να τερματίσει τη σύνδεση αμέσως μετά τη λήψη του μηνύματος ACK επαναλαμβάνει (μέχρι ένα προκαθορισμένο πλήθος προσπαθειών) την αποστολή του FIN αν δεν λάβει επιβεβαίωση Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 29 / 42
Εγκαθίδρυση και τερματισμός σύνδεσης Τερματισμός σύνδεσης (2/2) Αν μια διεργασία έστειλε το μήνυμα FIN πριν λάβει αντίστοιχο μήνυμα FIN μπορεί να τερματίσει τη σύνδεση μετά τη λήψη ενός μηνύματος FIN (και την απάντηση με ACK) και αφού περιμένει για χρόνο 2MSL η αναμονή είναι απαραίτητη γιατί δεν γνωρίζει αν η επιβεβαίωση παραδόθηκε σωστά η μη ορθή παράδοση της επιβεβαίωσης μπορεί να προκαλέσει επανεκπομπή του FIN και επομένως σύγχυση αν ληφθεί από επόμενη σύνδεση Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 30 / 42
Μηχανισμός κυλιόμενου παραθύρου Διάρθρωση.1 Το Επίπεδο Μεταφοράς.2 Το πρωτόκολλο UDP.3 Το πρωτόκολλο TCP Ρεύμα byte και Τμήματα Εγκαθίδρυση και τερματισμός σύνδεσης Μηχανισμός κυλιόμενου παραθύρου Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 31 / 42
Μηχανισμός κυλιόμενου παραθύρου Γενικές αρχές Ο μηχανισμός κυλιόμενου παραθύρου του TCP εξασφαλίζει την αξιόπιστη και εν σειρά παράδοση των δεδομένων Επιπλέον, ενσωματώνει και ένα μηχανισμό ελέγχου ροής αντί της χρήσης ενός σταθερού μεγέθους παραθύρου, ο παραλήπτης αναγγέλλει στον αποστολέα το μέγεθος παραθύρου η αναγγελία του παραθύρου γίνεται μέσω του πεδίου αναγγελθέν παράθυρο ο αποστολέας προσαρμόζεται ώστε τα μη επιβεβαιωμένα δεδομένα να μην έχουν μέγεθος μεγαλύτερο από το μέγεθος του παραθύρου Ο παραλήπτης επιλέγει το μέγεθος παραθύρου με βάση το διαθέσιμο αποθηκευτικό χώρο Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 32 / 42
Μηχανισμός κυλιόμενου παραθύρου Αξιόπιστη και διατεταγμένη παράδοση (1/2) Ο αποστολέας διατηρεί ένα χώρο προσωρινής αποθήκευσης για δεδομένα που: έχουν σταλεί αλλά δεν έχουν επιβεβαιωθεί έχουν εγγραφεί από την εφαρμογή αλλά δεν έχουν αποσταλεί Ο αποστολέας διατηρεί τρεις μετρητές: LastByteAcked: τελευταίο επιβεβαιωμένο byte LastByteSent: τελευταίο σταλθέν byte LastByteWritten: τελευταίο εγγεγραμμένο byte LastByteAcked LastByteSent LastByteSent LastByteW ritten Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 33 / 42
Μηχανισμός κυλιόμενου παραθύρου Αξιόπιστη και διατεταγμένη παράδοση (2/2) Ο παραλήπτης διατηρεί ένα χώρο προσωρινής αποθήκευσης για δεδομένα που: λαμβάνονται χωρίς σωστή σειρά δεδομένα που είναι σε σωστή σειρά (δηλαδή δεν λείπουν byte στο ρεύμα byte που προηγείται) αλλά η εφαρμογή δεν τα έχει διαβάσει Ο παραλήπτης διατηρεί επίσης τρεις μετρητές: LastByteRead: τελευταίο διαβασμένο byte NextByteExpected: επόμενο αναμενόμενο byte LastByteRcvd: τελευταίο ληφθέν byte LastByteRead NextByteExpected Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 34 / 42
Μηχανισμός κυλιόμενου παραθύρου Έλεγχος ροής (1/3) Στο πρωτόκολλο κυλιόμενου παραθύρου το μέγεθος του παραθύρου καθορίζει το μέγιστο ρυθμό του αποστολέα αναπαριστά τα δεδομένα που μπορεί να στείλει ο αποστολέας χωρίς επιβεβαίωση το μέγιστο παράθυρο καθορίζεται από το μέγιστο αποθηκευτικό χώρο του αποστολέα (MaxSendBuffer) και του παραλήπτη (MaxRcvBuffer) Ο παραλήπτης μπορεί να ελέγξει το ρυθμό του αποστολέα αναγγέλοντας μέσω μιας επιβεβαίωσης ένα παράθυρο ανάλογα με την αποθηκευτική του ικανότητα (LastByteRcvd LastByteRead M axrcvbuf f er) AdvertisedW indow = MaxRcvBuffer ((NextByteExpected 1) LastByteRead) Το παράθυρο αναπροσαρμόζεται ανάλογα με την ικανότητα του παραλήπτη να διαβάζει δεδομένα το παράθυρο λαμβάνει τιμές από 0 μέχρι MaxRcvBuffer Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 35 / 42
Μηχανισμός κυλιόμενου παραθύρου Έλεγχος ροής (2/3) Ο αποστολέας πρέπει να τηρήσει το αναγγελθέν παράθυρο (LastByteSent LastByteAcked AdvertisedW indow)) υπολογίζοντας ένα δραστικό παράθυρο: EffectiveW indow = AdvertisedW indow (LastByteSent LastByteAcked) παράλληλα πρέπει να εξασφαλίσει ότι η εφαρμογή δεν θα προκαλέσει υπερχείλιση του αποθηκευτικού χώρου (LastByteW ritten LastByteAcked M axsendbuf f er) Ο αποστολέας σταματά την αποστολή δεδομένων αν το δραστικό παράθυρο γίνει μηδέν πρόβλημα: η μη αποστολή δεδομένων δεν παράγει επιβεβαιώσεις ώστε να ενημερωθεί ο αποστολέας για μεταβολές του παραθύρου του παραλήπτη λύση: το TCP εξακολουθεί να στέλνει ένα byte δεδομένων ακόμα και αν το δραστικό παράθυρο είναι μηδέν Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 36 / 42
Μηχανισμός κυλιόμενου παραθύρου Έλεγχος ροής (3/3). Example.. Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 37 / 42
Μηχανισμός κυλιόμενου παραθύρου Προστασία από αναδίπλωση Οι αριθμοί ακολουθίας που χρησιμοποιούνται στο TCP έχουν πεπερασμένο μέγεθος 32 bit και επομένως επαναχρησιμοποιούνται (αναδίπλωση, rollover) Αντιμετώπιση προβλημάτων που προκαλούνται από την αναδίπλωση ο χώρος του αριθμού ακολουθίας πρέπει να είναι διπλάσιος του μεγέθους του παραθύρου η προδιαγραφή ικανοποιείται εύκολα καθώς ο αριθμός ακολουθίας έχει μέγεθος 32 bit ενώ το αναγγελθέν παράθυρο 16 bit δύο byte με τον ίδιο αριθμό ακολουθίας δεν πρέπει να συνυπάρχουν στο δίκτυο πρέπει οι αριθμοί ακολουθίας να μην αναδιπλώνονται σε χρόνο MSL (120 secs) Bandwidth Time to rollover Bandwidth Time to rollover T1 (1.5 Mbps) 6.4 h OC-3 (155 Mbps) 4 min Ethernet (10 Mbps) 57 min OC-12 55 secs T3 (45 Mbps) 13 min OC-48 14 secs Fast Ethernet (100 Mbps) 6 min Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 38 / 42
Μηχανισμός κυλιόμενου παραθύρου Πληρότητα αγωγού Μεγιστοποίηση απόδοσης πρωτοκόλλου κυλιόμενου παραθύρου: το μέγεθος του παραθύρου καθορίζεται με βάση το γινόμενο εύρους ζώνης-καθυστέρησης (bandwidth-delay product) το παράθυρο πρέπει να κρατά πλήρη το αγωγό που συνδέει τις διεργασίες που επικοινωνούν Το μέγεθος του αναγγελθέντος παραθύρου στο TCP (16 bit) δεν μπορεί να υποστηρίξει την αποδοτική λειτουργία σε δίκτυα μεγάλων ταχυτήτων Bandwidth BDP(d=100 ms) Bandwidth BDP(d=100 ms) T1 (1.5 Mbps) 18 KB OC-3 (155 Mbps) 1.8 MB Ethernet (10 Mbps) 122 KB OC-12 7.4 MB T3 (45 Mbps) 549 KB OC-48 29.6 MB Fast Ethernet (100 Mbps) 1.2 MB. Έχουν ήδη προταθεί επεκτάσεις του TCP που επιλύουν τόσο το πρόβλημα του μεγέθους. του παραθύρου όσο και της αναδίπλωσης των αριθμών ακολουθίας Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 39 / 42
Μηχανισμός κυλιόμενου παραθύρου Ενεργοποίηση μετάδοσης (1/2) To TCP διαθέτει τρεις διαφορετικούς τρόπους για να αποφασίσει πότε θα παράγει ένα τμήμα (segment) για μετάδοση όταν έχει συγκεντρωθεί ένας προκαθορισμένος αριθμός byte προς αποστολή ο αριθμός αυτός ονομάζεται μέγιστο μέγεθος τμήματος (maximum segment size, MSS) συνήθως το MSS τίθεται ίσο με το MTU του άμεσα συνδεδεμένου δικτύου όταν η διεργασία αποστολέας το ζητά ρητά η διαδικασία ονομάζεται ώθηση (push) μετά τη λήξη ενός χρονομέτρου αποστέλλονται τα δεδομένα που είχαν αποθηκευτεί στη διάρκεια του χρονομέτρου. Η απόφαση για την αποστολή δεδομένων επηρεάζεται από τον έλεγχο ροής του TCP. Οι παραπάνω τεχνικές εφαρμόζονται όταν δεν υπάρχει κάποιος περιορισμός από τον έλεγχο. ροής. Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 40 / 42
Μηχανισμός κυλιόμενου παραθύρου Ενεργοποίηση μετάδοσης (2/2) Όταν ο έλεγχος ροής καθορίζει ένα μέγεθος παραθύρου μικρότερο από τα αποθηκευμένα δεδομένα οι αρχικές εκδόσεις του TCP υιοθέτησαν μια επιθετική πολιτική εκμετάλλευσης αποστολή δεδομένων όσο το μέγεθος παραθύρου πρόβλημα: το σύνδρομο του ανόητου παραθύρου (silly window syndrome) δημιουργούνται μικρά πλαίσια που δεν αποσύρονται από το δίκτυο Το σύνδρομο του ανόητου παραθύρου επιλύθηκε με τον αλγόριθμο του Nagle που περιγράφει ότι μια εφαρμογή μπορεί να στείλει δεδομένα αν: τα υπάρχοντα δεδομένα όσο και το αναγγελθέν παράθυρο είναι μεγέθους τουλάχιστον MSS δεν υπάρχουν άλλα δεδομένα υπό μετάδοση χωρίς να έχουν επιβεβαιωθεί Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 41 / 42
Μηχανισμός κυλιόμενου παραθύρου Προσαρμοστική αναμετάδοση Καθορισμός βέλτιστου χρόνου αναμονής (timeout): ιδιαίτερα σημαντικός για την απόδοση του αλγόριθμου κυλιόμενου παραθύρου ο προσδιορισμός του σχετίζεται με το χρόνο RTT o χρόνος RTT είναι μεταβαλλόμενος σε ένα διαδίκτυο και η μέτρησή του είναι δύσκολη To TCP καθορίζει ένα μηχανισμό εκτίμησης του χρόνου RTT για κάθε αποστολή πακέτου και λήψη μιας επιβεβαίωσης ένας κόμβος πραγματοποιεί μια μέτρηση του χρόνου RTT (SampleRTT) ο εκτιμώμενος χρόνος RTT (EstimatedRTT) υπολογίζεται ως: EstimatedRT T = αestimatedrt T + (1 α)samplert T η τιμή α έχει σκοπό να εξομαλύνει τις απότομες διακυμάνσεις του χρόνου RTT Το TCP καθορίζει timeout = 2EstimatedRT T. Έχουν προταθεί περισσότερο αποδοτικοί αλγόριθμοι για τον υπολογισμό του χρόνου. RTT όπως οι αλγόριθμοι των Karn/Partridge και Jacobson/Karels Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΠΛΥ606: Δίκτυα Υπολογιστών 42 / 42
Τέλος Ενότητας
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Ιωαννίνων» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.
Σημειώματα
Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.0. Έχουν προηγηθεί οι κάτωθι εκδόσεις: Έκδοση 1.0 διαθέσιμη εδώ. http://ecourse.uoi.gr/course/view.php?id=1103.
Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Ιωαννίνων, Διδάσκων : Επίκουρος Καθηγητής Ε. Παπαπέτρου. «Δίκτυα Υπολογιστών. Επίπεδο Μεταφοράς». Έκδοση: 1.0. Ιωάννινα 2014. Διαθέσιμο από τη δικτυακή διεύθυνση: http://ecourse.uoi.gr/course/view.php?id=1103.
Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά Δημιουργού - Μη Εμπορική Χρήση Όχι Παράγωγα Έργα, Διεθνής Έκδοση 4.0 [1] ή μεταγενέστερη. [1] https://creativecommons.org/licenses/by-nc-nd/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο. που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο. που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο. Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί.