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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3.2 Το αυτοδύναμο πακέτο IP (datagram) Δομή πακέτου

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

Εργαστήριο Ethereal: ICMP

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Alternating Bit Protocol (ABP)

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

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

Εργαστήριο Wireshark: TCP

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

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

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

Υπηρεσίες δικτύου και πρωτόκολλα για πολυμεσικές επικοινωνίες

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

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

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

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

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

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

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

Εργαστήριο Ethereal: TCP

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

Transmission Control Protocol. Transmission Control Protocol

7.5 Πρωτόκολλο IP. & Ερωτήσεις

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

Δίκτυα ATM. Τεχνολογία Πολυμέσων και Πολυμεσικές Επικοινωνίες 21-1

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

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

Δίκτυα Επικοινωνίας Υπολογιστών Ενότητα 3: Εισαγωγή. Μιχαήλ Λογοθέτης Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών

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

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

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

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

Δίκτυα Υπολογιστών Λύσεις σειράς ασκήσεων επανάληψης

Κεφάλαιο 4ο ΕΠΙΠΕΔΟ ΜΕΤΑΦΟΡΑΣ

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

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

How do loss and delay occur?

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

Αλεξάνδρειο ΤΕΙ Θεσσαλονίκης Τμήμα Πληροφορικής ΔΙΑΔΙΚΤΥΑ ΜΕ TCP / IP. Βίτσας Βασίλειος

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

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

Εγγυημένη ποιότητα υπηρεσίας

ίκτυα Υπολογιστών Φεβρουάριος 2002

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

Τρίτη Σειρά Ασκήσεων ΑΣΚΗΣΗ 1 ΑΣΚΗΣΗ 1 ΛΥΣΗ ΑΣΚΗΣΗ 2

ΔΙΚΤΥΑ (23-26) Π. Φουληράς

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

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

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

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

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

Transcript:

Κεφάλαιο 3 Επίπεδο Μεταφοράς Πηγή των ακόλουθων διαφανειών είναι οι διαφάνειες που συνοδεύουν ως διδακτικό υλικό το βιβλίο των J.F. Kurose and K.W. Ross: Computer Networking: A Top-Down Approach Featuring the Internet, 2η έκδοση ικτύωση Υπολογιστών: Προσέγγιση από Πάνω προς τα Κάτω µε Έµφαση στο ιαδίκτυο, Jim Kurose, Keith Ross 2η έκδοση, Addison- Wesley, 2002. (Μετάφραση Εκδόσεις Γκιούρδας, 2004) Επίπεδο Μεταφοράς 3-1 Κεφάλαιο 3: Επίπεδο Μεταφοράς Στόχοι: κατανόηση αρχών που διέπουν τις υπηρεσίες που παρέχονται από το επίπεδο : πολύπλεξη/αποπολύπλεξη multiplexing/demultiplexing αξιόπιστη µεταφορά δεδοµένων έλεγχος ροής έλεγχος εξέταση πρωτοκόλλων επιπέδου του ια: UDP: ασυνδεσιστρεφής µεταφορά TCP: συνδεσιστρεφής µεταφορά έλεγχος στο TCP Επίπεδο Μεταφοράς 3-2 Κεφάλαιο 3 Υπηρεσίες και πρωτόκολλα 3.1 Υπηρεσίες επιπέδου 3.2 Πολύπλεξη και αποπολύπλεξη 3.3 Ασυνδεσιστρεφής µεταφορά: UDP 3.4 Αρχές αξιόπιστης δεδοµένων 3.5 Συνδεσιστρεφής µεταφορά: TCP δοµή segment αξιόπιστη µεταφορά δεδοµένων έλεγχος ροής διαχείριση συνδέσεων 3.6 Αρχές ελέγχου 3.7 Έλεγχος στο TCP παρέχουν λογική επικοινωνία µεταξύ των διεργασιών µίας εφαρµογής που τρέχουν σε διαφορετικούς hosts τα πρωτόκολλα τρέχουν στα τερµατικά συστήµατα πλευρά αποστολέα: µετατροπή µηνυµάτων εφαρµογής σε segments που προωθούνται στο επίπεδο πλευρά παραλήπτη: συναρµολόγηση των segments σε µηνύµατα που προωθούνται στο επίπεδο εφαρµογής διάφορα πρωτόκολλα διαθέσιµα στις εφαρµογές ιαδίκτυο: TCP και UDP εφαρµογής λογική µεταφορά από άκρο σε άκρο εφαρµογής Επίπεδο Μεταφοράς 3-3 Επίπεδο Μεταφοράς 3-4 1

Σχέση µεταξύ επιπέδων & επίπεδο : λογική επικοινωνία µεταξύ διεργασιών επίπεδο : λογική επικοινωνία µεταξύ hosts το επίπεδο επεκτείνει την υπηρεσία παράδοσης από host σε host του επιπέδου σε µία υπηρεσία παράδοσης από διεργασία σε διεργασία (πολύπλεξη/αποπολύπλεξη) το επίπεδο στηρίζεται στις υπηρεσίες του επιπέδου και τις επαυξάνει Αναλογία 12 παιδιά στέλνουν γράµµατα σε 12 παιδιά διεργασίες = παιδιά µηνύµατα εφαρµογής = γράµµατα σε φακέλους hosts = σπίτια πρωτόκολλο = οι συλλέκτες/διανοµείς γραµµάτων στο σπίτι πρωτόκολλο επιπ. = ταχυδροµική υπηρεσία Επίπεδο Μεταφοράς 3-5 Πρωτόκολλα επιπέδου στο ιαδίκτυο UDP: παρεχόµενες υπηρεσίες πολύπλεξη/αποπολύπλεξη έλεγχος ακεραιότητας UDP: αναξιόπιστη υπηρεσία επέκταση της αναξιόπιστης ( best-effort ) υπηρεσίας παράδοσης του IP TCP: πρόσθετες παρεχόµενες υπηρεσίες αξιόπιστη παράδοση έλεγχος ροής έλεγχος µη παρεχόµενες υπηρεσίες: εγγυήσεις ως προς καθυστέρηση bandwidth εφαρµογής λογική µεταφορά από άκρο σε άκρο εφαρµογής Επίπεδο Μεταφοράς 3-6 Κεφάλαιο 3 3.1 Υπηρεσίες επιπέδου 3.2 Πολύπλεξη και αποπολύπλεξη 3.3 Ασυνδεσιστρεφής µεταφορά: UDP 3.4 Αρχές αξιόπιστης δεδοµένων 3.5 Συνδεσιστρεφής µεταφορά: TCP δοµή segment αξιόπιστη µεταφορά δεδοµένων έλεγχος ροής διαχείριση σύνδεσης 3.6 Αρχές ελέγχου 3.7 Έλεγχος στο TCP Επίπεδο Μεταφοράς 3-7 Αποπολύπλεξη host προορισµού: το επίπεδο λαµβάνει segments από το επίπεδο το επίπεδο πρέπει να παραδώσει τα segments στις σωστές διεργασίες, ή καλύτερα, στα σωστά sockets πολλαπλά sockets στον host απαιτείται socket identifier κάθε segment φέρει στην επικεφαλίδα πεδία που προσδιορίζουν το socket για το οποίο προορίζονται τα δεδοµένα: αριθµός θύρας πηγής (source port number) αριθµός θύρας προορισµού (destination port number) P1 P1 = socket εφαρµογής host = διεργασία P2 αριθµός θύρας (port number): αριθµός από 16 bits (0 65535) καλά γνωστοί αριθµοί θύρας (wellknown port numbers): 0-1023 π.χ. θύρα HTTP server: 80 Επίπεδο Μεταφοράς 3-8 2

Πολύπλεξη/Αποπολύπλεξη Αποπολύπλεξη στον παραλήπτη host: παράδοση λαµβανοµένων segments στο σωστό socket εφαρµογής = socket P3 = διεργασία P1 P1 εφαρµογής host 1 host 2 Πολύπλεξη στον αποστολέα host: συγκέντρωση δεδοµένων από πολλαπλά sockets, ενθυλάκωση δεδοµένων σε segments, παράδοση segments στο επίπεδο P2 P4 εφαρµογής host 3 Επίπεδο Μεταφοράς 3-9 Αποπολύπλεξη (συνέχεια) Ο host λαµβάνει IP datagrams κάθε datagram έχει διεύθυνση IP πηγής, διεύθυνση IP προορισµού κάθε datagram µεταφέρει ένα segment κάθε segment έχει αριθµό θύρας πηγής, αριθµό θύρας προορισµού Ο host χρησιµοποιεί διευθύνσεις IP & αριθµούς θύρας για να κατευθύνει το segment στο κατάλληλο socket UDP socket identifier TCP socket identifier αριθµός θύρας πηγής 32 bits δεδοµένα εφαρµογής (µήνυµα) αριθµός θύρας προορισµού άλλα πεδία επικεφαλίδας δοµή TCP/UDP segment Επίπεδο Μεταφοράς 3-10 Αποπολύπλεξη στο UDP (ασυνδεσιστρεφής) ένα UDP socket προσδιορίζεται από το ζεύγος: (διεύθυνση IP προορισµού, αριθµός θύρας προορισµού) Όταν ο host λάβει ένα UDP segment: ελέγχει τον αριθµό θύρας προορισµού στο segment κατευθύνει το UDP segment στο socket µε αυτόν τον αριθµό θύρας IP datagrams µε διαφορετικές διευθύνσεις IP πηγής και/ή διαφορετικούς αριθµούς θύρας πηγής οδηγούνται στο ίδιο socket Αποπολύπλεξη στο UDP (συνέχεια) host A host C host B P1 socket ID socket ID (Α, 9157) P3 (C, 6428) P1P2 socket ID SP: 6428 SP: 6428 (B, 5775) client IP: A SP: 9157 DP: 6428 S_IP: Α D_IP: C DP: 9157 S_IP: C D_IP: A server IP: C DP: 5775 S_IP: C D_IP: B SP: 5775 DP: 6428 S_IP: B D_IP: C client IP:B SP παρέχει διεύθυνση επιστροφής Επίπεδο Μεταφοράς 3-11 Επίπεδο Μεταφοράς 3-12 3

Αποπολύπλεξη στο TCP (συνδεσιστρεφής) Αποπολύπλεξη στο TCP (συνέχεια) ένα TCP socket προσδιορίζεται από την τετράδα: διεύθυνση IP πηγής αριθµός θύρας πηγής διεύθυνση IP προορισµού αριθµός θύρας προορισµού Ο host που λαµβάνει ένα segment (διεύθυνση IP προορισµού) χρησιµοποιεί και τις τρεις υπόλοιπες τιµές για να κατευθύνει το TCP segment στο κατάλληλο socket Ένας server host µπορεί να υποστηρίξει πολλά TCP sockets ταυτόχρονα: κάθε socket σε ένα host προσδιορίζεται από τη δική του τριάδα Οι web servers έχουν διαφορετικά sockets για κάθε συνδεδεµένο client το non-persistent HTTP έχει διαφορετικό socket για κάθε αίτηση HTTP Επίπεδο Μεταφοράς 3-13 host A host C host B P1 socket ID socket ID P3 P4 (Α, 9157, C, 80) (B, 5775, C, 80) P1P2 client IP: A SP: 9157 DP: 80 S_IP: A D_IP: C SP: 80 SP: 80 DP: 9157 S_IP: C D_IP: A server IP: C DP: 5775 S_IP: C D_IP: B SP: 5775 DP: 80 S_IP: B D_IP: C client IP:B Επίπεδο Μεταφοράς 3-14 Κεφάλαιο 3 3.1 Υπηρεσίες επιπέδου 3.2 Πολύπλεξη και αποπολύπλεξη 3.3 Ασυνδεσιστρεφής µεταφορά: UDP 3.4 Αρχές αξιόπιστης δεδοµένων 3.5 Συνδεσιστρεφής µεταφορά: TCP δοµή segment αξιόπιστη µεταφορά δεδοµένων έλεγχος ροής διαχείριση σύνδεσης 3.6 Αρχές ελέγχου 3.7 Έλεγχος στο TCP Επίπεδο Μεταφοράς 3-15 UDP: User Datagram Protocol [RFC 768] µινιµαλιστικό πρωτόκολλο πολύπλεξη/αποπολύπλεξη έλεγχος σφαλµάτων υπηρεσία βέλτιστης προσπάθειας (best effort) Τα UDP segments ενδέχεται: να χαθούν να παραδοθούν εκτός σειράς connectionless: δεν γίνεται χειραψία (handshaking) µεταξύ UDP αποστολέα, παραλήπτη το επίπεδο χειρίζεται κάθε UDP segment ανεξάρτητα από άλλα Τι εξυπηρετεί το UDP; δεν απαιτεί εγκαθίδρυση σύνδεσης (που εισάγει καθυστέρηση) απλό: δεν διατηρεί κατάσταση σύνδεσης receive & send buffers παράµετροι ελέγχου sequence, acknowledgement # σε αποστολέα και παραλήπτη µικρή επικεφαλίδα segment 8 bytes (UDP) vs. 20 bytes (TCP) δεν παρέχει έλεγχο : το UDP µπορεί να στείλει δεδοµένα όσο γρήγορα µπορεί (εν δυνάµει πρόβληµα) δεν έχει καθυστερήσεις λόγω επαναµεταδόσεων Επίπεδο Μεταφοράς 3-16 4

UDP Εφαρµογές που χρησιµοποιούν UDP πολυµεσικές εφαρµογές συνεχούς ροής (streaming multimedia) µε ανοχή στις απώλειες ευαίσθητες ως προς το bandwidth άλλες εφαρµογές π.χ. DNS SNMP αξιόπιστη µεταφορά µε UDP: µε µηχανισµούς ανάκαµψης από σφάλµατα στο επίπεδο εφαρµογής ο µηχανισµός εξαρτάται από τις απαιτήσεις της εφαρµογής οµή UDP segment 32 bits source port # dest port # length δεδοµένα εφαρµογής (µήνυµα) checksum length: µήκος UDP segment σε bytes (συµπεριλαµβανοµένης επικεφαλίδας) Επίπεδο Μεταφοράς 3-17 UDP checksum Στόχος: ανίχνευση σφαλµάτων (ανεστραµµένων bits) στο λαµβανόµενο segment Αποστολέας: χειρίζεται το περιεχόµενο του segment ως ακολουθία ακεραίων των 16 bits checksum: συµπλήρωµα ως προς 1 του αθροίσµατος των περιεχοµένων του segment ο αποστολέας τοποθετεί την τιµή του checksum στο πεδίο checksum του UDP segment Παραλήπτης: υπολογίζει το checksum του λαµβανόµενου segment ελέγχει εάν η υπολογισθείσα τιµή του checksum είναι ίση µε την τιµή στο πεδίο checksum: Όχι ανίχνευση σφάλµατος απόρριψη segment προώθηση µε προειδοποίηση Ναι δεν έχει ανιχνευθεί κανένα σφάλµα Επίπεδο Μεταφοράς 3-18 + UDP checksum Έστω segment: 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 Αποστολέας: πρόσθεση 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 0 0 0 1 0 0 0 1 1 1 0 0 1 0 1 0 1 1 0 0 1 0 1 0 CKS 0 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 + σφάλµα Παραλήπτης: πρόσθεση 01 1 0 0 1 1 0 0 1 1 0 0 1 1 0 01 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 00 1 1 0 1 0 1 0 0 1 1 0 1 0 1 01 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Κεφάλαιο 3 3.1 Υπηρεσίες επιπέδου 3.2 Πολύπλεξη και αποπολύπλεξη 3.3 Ασυνδεσιστρεφής µεταφορά: UDP 3.4 Αρχές αξιόπιστης δεδοµένων 3.5 Συνδεσιστρεφής µεταφορά: TCP δοµή segment αξιόπιστη µεταφορά δεδοµένων έλεγχος ροής διαχείριση σύνδεσης 3.6 Αρχές ελέγχου 3.7 Έλεγχος στο TCP Επίπεδο Μεταφοράς 3-19 Επίπεδο Μεταφοράς 3-20 5

TCP: Επισκόπηση RFCs: 793, 1122, 1323, 2018, 2581 connection-oriented: µε τη χειραψία (ανταλλαγή µηνυµάτων ελέγχου) γίνεται αρχικοποίηση της κατάστασης σε αποστολέα & παραλήπτη πριν αρχίσει η µεταφορά δεδοµένων full duplex data: αµφίδροµη ροή δεδοµένων στην ίδια σύνδεση point-to-point: ένας αποστολέας, ένας παραλήπτης socket door application writes data TCP send buffer segment application reads data TCP receive buffer socket door send & receive buffers MSS: maximum segment size αξιόπιστη, εν σειρά ροή από bytes (byte stream): δεν υπάρχουν όρια µηνυµάτων έλεγχος ροής: ώστε ο αποστολέας να µην υπερφορτώνει τον παραλήπτη pipelinιng: o έλεγχος ροής και ορίζουν το µέγεθος του παραθύρου στο TCP Επίπεδο Μεταφοράς 3-21 οµή TCP segment Πεδία: source, destination port #: πολύπλεξη/αποπολύπλεξη sequence, acknowledgment #: υλοποίηση αξιόπιστης δεδοµένων header length: µήκος επικεφαλίδας σε λέξεις των 32 bits receive window: αριθµός bytes που είναι διατεθειµένος να λάβει ο παραλήπτης checksum: όπως στο UDP options: προαιρετικό δεν χρησιµοποιείται συνήθως διαπραγµάτευση MSS µεταξύ αποστολέα & παραλήπτη application data: δεδοµένα εφαρµογής (0 µήκος MSS) 32 bits source port # dest port # head len sequence number acknowledgement number not used checksum UAflag P R S F receive window urg data pnter options (µεταβλητό µήκος) application data (µεταβλητό µήκος) Επίπεδο Μεταφοράς 3-22 οµή TCP segment (συνέχεια) Flag bits: URG: υπάρχουν δεδοµένα στο segment που η εφαρµογή (πλευρά αποστολέα) έχει χαρακτηρίσει ως επείγοντα (δεν χρησιµοποιείται, εν γένει) : number έγκυρο PSH: άµεση προώθηση δεδοµένων στην εφαρµογή από τον παραλήπτη RST (reset), SYN (synchronize), FIN (finish): χρησιµοποιούνται για την εγκαθίδρυση και τερµατισµό σύνδεσηςtcp (περισσότερα σε λίγο) URG Πεδίο Flag PSH RST SYN FIN urgent data pointer: εάν URG = 1, τότε το πεδίο αυτό δείχνει τη θέση του τελευταίου byte των επειγόντων δεδοµένων Αριθµός ακολουθίας TCP Το TCP αντιµετωπίζει τα δεδοµένα που λαµβάνει από την εφαρµογή ως µία διατεταγµένη ακολουθία (ροή) από bytes Τα bytes µίας ροής είναι αριθµηµένα ακολουθιακά (αφανώς) Αριθµός ακολουθίας (sequence number) ενός segment: ο αριθµός του πρώτου byte δεδοµένων στο segment στη ροή των bytes Ο αρχικός αριθµός της ακολουθίας των bytes επιλέγεται τυχαία 52 53 54 // // ροή bytes 587 588 589 // // 713 714 Επίπεδο Μεταφοράς 3-23 δεδοµένα TCP segment αριθµός ακολ. segment = 53 δεδοµένα TCP segment αριθµός ακολ. segment = 588 Επίπεδο Μεταφοράς 3-24 6

Αριθµός επιβεβαίωσης TCP αριθµός επιβεβαίωσης (acknowledgement number): αριθµός ακολουθίας του επόµενου αναµενόµενου byte π.χ. ο host A λαµβάνει το segment µε bytes δεδοµένων (0-535) ο host A στέλνει επιβεβαίωση () µε αριθµό 536 αθροιστικές επιβεβαιώσεις (cumulative acknowledgements): το TCP στέλνει επιβεβαίωση για όλα τα bytes που έχει λάβει στη σωστή σειρά µέχρι το πρώτο byte που εκλείπει π.χ. ο host A λαµβάνει το segment_1 (0-535) και το segment_3 (900 1000) αλλά όχι το segment_2 (536-899) ο host A στέλνει επιβεβαίωση () µε αριθµό 536 segments εκτός σειράς: segments που λαµβάνονται εκτός σειράς είτε απορρίπτονται είτε παραµένουν σε buffers έως ότου φθάσουν τα υπολειπόµενα ανάλογα µε την υλοποίηση TCP seq #, ack # (παράδειγµα) Μετά την αρχικοποίηση κατά την εγκαθίδρυση σύνδεσης TCP: ο host B περιµένει το segment µε αριθµό ακολουθίας 42 ο host A περιµένει το segment µε αριθµό ακολουθίας 79 Ο χρήστης πληκτρολογεί C O host Α επιβεβαιώνει τη λήψη της ηχούς C Host A Seq=42, =79, data = C Host B Seq=79, =43, data = C piggyback Seq=43, =80 Απλό σενάριο εφαρµογής telnet O host B επιβεβαιώνει τη λήψη του C στέλνοντας πίσω την ηχώ του Επίπεδο Μεταφοράς 3-25 Επίπεδο Μεταφοράς 3-26 TCP Round Trip Time και Timeout Επιλογή τιµής timeout στο TCP timeout > όµως είναι τυχαία µεταβλητή τιµή timeout πολύ µικρή: πρόωρο timeout άσκοπες επαναµεταδόσεις τιµή timeout πολύ µεγάλη: αργή αντίδραση στις απώλειες segments η τιµή του timeout καθορίζεται ως συνάρτηση της εκτιµώµενης, από µετρήσεις, τιµής του Εκτίµηση του : βασίζεται στις τιµές δειγµάτων Sample: µετρούµενος από τη µετάδοση ενός segment έως τη λήψη της επιβεβαίωσής του το TCP αγνοεί δείγµατα που προέρχονται από επαναµεταδιδόµενα segments (Γιατί;) Το TCP δεν λαµβάνει δείγµατα Sample για κάθε segment ένα Sample κάθε περίπου Για την εκτίµηση του επιλέγεται ένας µέσος όρος των πρόσφατων δειγµάτων Sample Επίπεδο Μεταφοράς 3-27 Εκτίµηση του Για την εκτίµηση του επιλέγεται ένας µέσος όρος των προσφάτων δειγµάτων Sample µε εκθετικά βάρη (exponential weighted moving average): EstimatedR TT(n) = (1 α)estimated(n 1) + αsample(n),α < 1 n n k Estimated(n) = α (1 α) Sample(k), n 1 k = 1 = αsample(n) + α(1- α)sample(n -1) + 2 n -1 α(1- α) Sample(n - 2) + L + α(1- α) Sample(1) η επίδραση των παλαιοτέρων δειγµάτων φθίνει εκθετικά µε το n όσο µεγαλύτερη η τιµή του α τόσο µεγαλύτερο το βάρος που δίνεται στις πιο πρόσφατες µετρήσεις τυπική τιµή: α = 0.125 (1/8) Επίπεδο Μεταφοράς 3-28 7

Παράδειγµα εκτίµησης του TCP Round Trip Time και Timeout (milliseconds) (milliseconds) 350 300 250 200 : από gaia.cs.umass.edu : to fantasia.eurecom.fr σε fantasia.eurecom.fr Επιλογή τιµής timeout Estimated συν περιθώριο ασφαλείας µεγάλη µεταβλητότητα στο Estimated -> µεγαλύτερο περιθώριο ασφαλείας εκτίµηση της τυπικής απόκλισης του χρησιµοποιώντας τη µέση τιµή (µε εκθετικά βάρη) της απόλυτης απόκλισης του Sample από το Estimated: Dev(n) = (1 β)dev(n 1) + β Sample( n) EstimatedR TT(n) (συνήθως, β = 0.25) 150 Ητιµή του χρονικού διαστήµατος timeout τίθεται σε: 100 1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106 time (seconnds) (seconds) Sample Estimated TimeoutInterval = Estimated + 4*Dev Εάν Dev 0 τότε TimeoutInterval Estimated Επίπεδο Μεταφοράς 3-29 Επίπεδο Μεταφοράς 3-30 Κεφάλαιο 3 Αξιόπιστη µεταφορά δεδοµένων στο TCP 3.1 Υπηρεσίες επιπέδου 3.2 Πολύπλεξη και αποπολύπλεξη 3.3 Ασυνδεσιστρεφής µεταφορά: UDP 3.4 Αρχές αξιόπιστης δεδοµένων 3.5 Συνδεσιστρεφής µεταφορά: TCP δοµή segment αξιόπιστη µεταφορά δεδοµένων έλεγχος ροής διαχείριση σύνδεσης 3.6 Αρχές ελέγχου 3.7 Έλεγχος στο TCP Το TCP δηµιουργεί υπηρεσία αξιόπιστης δεδοµένων πάνω από την αναξιόπιστη υπηρεσία του IP χρησιµοποιώντας επαναµεταδόσεις Το TCP χρησιµοποιεί: pipelining των segments αθροιστικές επιβεβαιώσεις (cumulative s) ένα µόνο timer επαναµετάδοσης Γεγονότα που προκαλούν επαναµεταδόσεις: timeouts διπλότυπες επιβεβαιώσεις (duplicate s) Θεωρούµε αρχικά απλοποιηµένο αποστολέα TCP αγνοώντας: διπλότυπες επιβεβαιώσεις έλεγχο ροής, έλεγχο Επίπεδο Μεταφοράς 3-31 Επίπεδο Μεταφοράς 3-32 8

Γεγονότα στον TCP αποστολέα: Γεγονότα που συµβαίνουν στην πλευρά του TCP αποστολέα: παραλαβή δεδοµένων από εφαρµογή timeout λήψη επιβεβαίωσης παραλαβή δεδοµένων από εφαρµογή: δηµιουργία segment που φέρει αριθµό ακολουθίας αριθµός ακολουθίας: αριθµός του πρώτου byte δεδοµένων στο segment όπως προκύπτει από την ακολουθιακή αρίθµηση των bytes της ροής εκκίνηση timer εφόσον δεν βρίσκεται σε λειτουργία (θεωρείστε τον timer ως τον timer για το παλαιότερο ανεπιβεβαίωτο segment) προθεσµία λήξης timer: TimeOutInterval προώθηση segment στο IP Επίπεδο Μεταφοράς 3-33 Γεγονότα στον αποστολέα TCP: (συνέχεια) timeout: επαναµετάδοση ανεπιβεβαίωτου segment µε το µικρότερο αριθµό ακολουθίας εκκίνηση timer λήψη επιβεβαίωσης : Εάν πρόκειται για επιβεβαίωση segments που ήταν ανεπιβεβαίωτα προηγουµένως (πριν από τη λήψη του ): ενηµέρωση ως προς τα segments που επιβεβαιώνονται µε το παρόν εκκίνηση timer εφόσον παραµένουν ανεπιβεβαίωτα segments Επίπεδο Μεταφοράς 3-34 NextSeqNum = InitialSeqNum SendBase = InitialSeqNum loop (forever) { switch(event) 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: received, with field value of y if (y > SendBase) { SendBase = y if (there are currently not-yet-acknowledged segments) start timer } } /* end of loop forever */ Αποστολέας TCP (απλοποιηµένος) SendBase-1: αριθµός του τελευταίου byte που έχει επιβεβαιωθεί Ο αποστολέας ανα-µένει επιβεβαίωση των bytes µε αριθµό SendBase Ο παραλήπτης ανα-µένει bytes µε αριθµό y Παράδειγµα: SendBase = 72, y= 73 y > SendBase, οπότε επιβεβαιώνεται το byte 72 (SendBase = 73) Επίπεδο Μεταφοράς 3-35 TCP: σενάρια επαναµεταδόσεων SendBase = 92 timeout SendBase = 100 Host A Seq=92, 8 bytes data X απώλεια Host B =100 Seq=92, 8 bytes data =100 σενάριο απολεσθέντος SendBase = 92 SendBase = 100 SendBase = 120 SendBase = 120 Seq=92 timeout Seq=92 timeout Host A Seq=100, 20 bytes data =100 Host B Seq=92, 8 bytes data =120 Seq=92, 8 bytes data =120 σενάριο πρόωρου timeout Επίπεδο Μεταφοράς 3-36 9

TCP: σενάρια επαναµεταδόσεων (συνέχεια) SendBase = 92 SendBase = 120 timeout Host A Seq=92, 8 bytes data απώλεια Host B Seq=100, 20 bytes data X =120 =100 σενάριο αθροιστικών Επίπεδο Μεταφοράς 3-37 TCP: διπλασιασµός της διάρκειας του timeout Μετά από timeout, το segment επαναµεταδίδεται Το timeout ενδεχοµένως να οφείλεται σε συµφόρηση Προς αποφυγή περαιτέρω, το TimeOutInterval για το επαναµεταδιδόµενο segment υπολογίζεται ως TimeOutInterval = 2 TimeOutInterval To TimeOutInterval διπλα-σιάζεται για κάθε διαδοχικό επαναµεταδιδόµενο segment (εκθετική αύξηση) Η υπαναχώρηση παύει µε την εκκίνηση του timer για µη επαναµεταδιδόµενο segment timeout timeout Host A Host B Seq=92, 8 bytes data απώλεια X =100 Seq=92, 8 bytes data απώλεια X =100 Επίπεδο Μεταφοράς 3-38 Αποστολή στο TCP [RFC 1122, RFC 2581] Ταχεία Επαναµετάδοση (Fast Retransmit) Γεγονός στον παραλήπτη Άφιξη segment εν σειρά µε αναµενό- µενο αριθµό ακολουθίας. Όλα τα δεδοµένα έως τον αναµενόµενο αριθµό ακολουθίας είναι ήδη επιβεβαιωµένα. Άφιξη segment εν σειρά µε αναµενό- µενο αριθµό ακολουθίας. Εκκρεµεί το και ενός ακόµη segment. Άφιξη segment εκτός σειράς µε αριθµό ακολουθίας µεγαλύτερο του αναµενόµενου. Ανίχνευση κενού. Άφιξη segment το οποίο συµπληρώ-νει, µερικώς ή εξ ολοκλήρου, το κενό. ράση TCP παραλήπτη Καθυστερηµένο. Αναµονή έως 500 ms για το επόµενο segment, αποστολή. Άµεση αποστολή ενός αθροιστικού που επιβεβαιώνει αµφότερα τα εν σειρά segments. Άµεση αποστολή ενός διπλότυπου που υποδεικνύει τον αριθµό ακολουθίας του επόµενου αναµενόµενου byte. Άµεση αποστολή, υπό την προϋπόθεση ότι το segment αρχίζει στο κατώτερο άκρο του κενού. Επίπεδο Μεταφοράς 3-39 Ηδιάρκεια του timeout είναι συχνά σχετικά µεγάλη: µεγάλη καθυστέρηση πριν από την επαναµετάδοση απολεσθέντος segment Ανίχνευση απολεσθέντων segments µε διπλότυπα ιπλότυπο : που επιβεβαιώνει ένα segment για το οποίο ο αποστολέας έχει ήδη λάβει επιβεβαίωση Ο αποστολέας συχνά στέλνει πολλά segments το ένα αµέσως µετά το άλλο Εάν ένα segment χαθεί, ο αποστολέας θα λάβει πολλά διπλότυπα Εάν ο αποστολέας λάβει 3 διπλότυπα για το ίδιο segment, υποθέτει ότι το ακόλουθο segment (που µεταδόθηκε µετά από αυτό που έχει επιβεβαιωθεί) χάθηκε: ταχεία επαναµετάδοση: επαναµετάδοση του segment που θεωρείται χαµένο πριν από τη λήξη του timer επαναµετάδοσης Επίπεδο Μεταφοράς 3-40 10

Αλγόριθµος ταχείας επαναµετάδοσης: Ταχεία επαναµετάδοση event: received, with field value of y if (y > SendBase) { SendBase = y if (there are currently not-yet-acknowledged segments) start timer } else { increment count of dup s received for y if (count of dup s received for y = 3) { resend segment with sequence number y } διπλότυπο για segment που έχει ήδη επιβεβαιωθεί ταχεία επαναµετάδοση Επίπεδο Μεταφοράς 3-41 Παράδειγµα: Κάθε segment φέρει 20 bytes δεδοµένων Το τρίτο segment µε αριθµό ακολουθίας 60 χάνεται Μετά τη λήψη 3 διπλότυπων = 60 για το δεύτερο segment µε αριθµό ακολουθίας 40, το τρίτο segment µε αριθµό ακολουθίας 60 επαναµεταδίδεται SendBase = 20 SendBase = 40 SendBase = 60 = SendBase = SendBase = SendBase Host A Host B Seq=20 Seq=40 Seq=60 =40 =60Seq=100 Seq=120 =60 =60 =60 Seq=60 Seq=80 X Επίπεδο Μεταφοράς 3-42 Κεφάλαιο 3 3.1 Υπηρεσίες επιπέδου 3.2 Πολύπλεξη και αποπολύπλεξη 3.3 Ασυνδεσιστρεφής µεταφορά: UDP 3.4 Αρχές αξιόπιστης δεδοµένων 3.5 Συνδεσιστρεφής µεταφορά: TCP δοµή segment αξιόπιστη µεταφορά δεδοµένων έλεγχος ροής διαχείριση σύνδεσης 3.6 Αρχές ελέγχου 3.7 Έλεγχος στο TCP Επίπεδο Μεταφοράς 3-43 δεδοµένα από IP Έλεγχος ροής στο TCP η σύνδεση TCP τοποθετεί τα bytes που λαµβάνει σωστά και εν σειρά στο receive buffer: RcvWindow ελεύθερος χώρος RcvBuffer δεδοµένα TCP στον buffer διεργασία εφαρµογής όταν η διεργασία της εφαρµογής αργεί να διαβάσει τα δεδοµένα από το receive buffer, τότε ενδέχεται να υπερχειλίσει ο buffer έλεγχος ροής ο αποστολέας δεν υπερχειλίζει τον buffer του παραλήπτη στέλνοντας µεγάλο όγκο δεδοµένων µε µεγάλο ρυθµό υπηρεσία προσαρµογής του ρυθµού αποστολής στο ρυθµό µε τον οποίο διαβάζονται τα δεδοµένα από τον παραλήπτη Επίπεδο Μεταφοράς 3-44 11

δεδοµένα από IP Έλεγχος ροής στο TCP: υλοποίηση RcvWindow ελεύθερος χώρος RcvBuffer δεδοµένα TCP στον buffer (Έστω ότι ο παραλήπτης απορρίπτει τα segments που λαµβάνει εκτός σειράς) o ελεύθερος χώρος στο buffer = RcvWindow = RcvBuffer-[LastByteRcvd - LastByteRead] µεταβάλλεται µε δυναµικό τρόπο Ο παραλήπτης ενηµερώνει τον αποστολέα για τον ελεύθερο χώρο στο buffer περιλαµβά-νοντας την τρέχουσα τιµή του RcvWindow σε κάθε segment (πεδίο receive window) που στέλνει στον αποστολέα Ο αποστολέας περιορίζει τα ανεπιβεβαίωτα δεδοµένα στην τιµή του RcvWindow: LastByteSent LastByteAcked RcvWindow εγγύηση ότι ο receive buffer δεν θα υπερχειλίσει deadlock όταν RcvWindow = 0 διεργασία εφαρµογής Επίπεδο Μεταφοράς 3-45 Κεφάλαιο 3 3.1 Υπηρεσίες επιπέδου 3.2 Πολύπλεξη και αποπολύπλεξη 3.3 Ασυνδεσιστρεφής µεταφορά: UDP 3.4 Αρχές αξιόπιστης δεδοµένων 3.5 Συνδεσιστρεφής µεταφορά: TCP δοµή segment αξιόπιστη µεταφορά δεδοµένων έλεγχος ροής διαχείριση σύνδεσης 3.6 Αρχές ελέγχου 3.7 Έλεγχος στο TCP Επίπεδο Μεταφοράς 3-46 ιαχείριση σύνδεσης TCP Εγκαθίδρυση σύνδεσης µεταξύ TCP αποστολέα και παραλήπτη πριν από την ανταλλαγή δεδοµένων αρχικοποίηση µεταβλητών: sequence numbers buffers, πληροφορία ελέγχου ροής (π.χ. RcvWindow) O client ξεκινά τη σύνδεση µε τον server ακολουθώντας Χειραψία τριών βηµάτων: Βήµα 1: O client στέλνει TCP SYN segment (SYN = 1) στον server προσδιορίζει το αρχικό seqnum του client: seqnum = client_isn data = ιαχείριση σύνδεσης TCP (συνέχεια) Βήµα 2: Ο server λαµβάνει το SYN segment, απαντά µε SYN segment (SYN = 1, = 1) Ο server εκχωρεί buffers προσδιορίζει αρχικό seqnum seqnum = server_isn acknum = client_isn+1 data = Βήµα 3: Ο client λαµβάνει SYN, απαντά µε segment (SYN = 0, = 1) το οποίο µπορεί να περιέχει data Ο client εκχωρεί buffers seqnum = client_isn+1 acknum = server_isn+1 αίτηση σύνδεσης επιβεβαίωση χορήγησης σύνδεσης client server SYN=1, seq=client_isn SYN segment SYN=1, seq=server_isn =1, ack=client_isn+1 SYN segment SYN=0, seq=client_isn+1 =1, ack=server_isn+1 χορήγηση σύνδεσης Επίπεδο Μεταφοράς 3-47 Επίπεδο Μεταφοράς 3-48 12

ιαχείριση σύνδεσης TCP (συνέχεια) ιαχείριση σύνδεσης TCP (συνέχεια) Τερµατισµός σύνδεσης: Ο client αποφασίζει να τερµατίσει τη σύνδεση Βήµα 1: Ο client στέλνει TCP FIN segment (FIN = 1) στον server Βήµα 2: Ο server λαµβάνει το FIN segment, απαντά µε Ο server αρχίζει διαδικασία τερµατισµού της σύνδεσης στέλνοντας FIN segment στον client έναρξη τερµατισµού timed wait λήξη τερµατισµού client FIN FIN server έναρξη τερµατισµού λήξη τερµατισµού Βήµα 3: Ο client λαµβάνει το FIN segment, απαντά µε Κάνει µετάβαση στην κατάσταση timed wait απαντά µε σε λαµβανόµενα FIN segments Βήµα 4: O server λαµβάνει Η σύνδεση τερµατίζεται έναρξη τερµατισµού timed wait λήξη τερµατισµού client FIN FIN server έναρξη τερµατισµού λήξη τερµατισµού Επίπεδο Μεταφοράς 3-49 Επίπεδο Μεταφοράς 3-50 ιαχείριση σύνδεσης TCP (συνέχεια) ιαχείριση σύνδεσης TCP (συνέχεια) client server SYN_SENT SYN LISTEN κύκλος ζωής TCP server ESTABLISHED SYN SYN_RCVD ESTABLISHED κύκλος ζωής TCP client κύκλος ζωής TCP client FIN_WAIT_1 FIN_WAIT_2 TIME_WAIT FIN FIN CLOSE_WAIT LAST_ Επίπεδο Μεταφοράς 3-51 Επίπεδο Μεταφοράς 3-52 13

ιαχείριση σύνδεσης TCP (συνέχεια) client server Κεφάλαιο 3 κύκλος ζωής TCP server SYN_SENT ESTABLISHED FIN_WAIT_1 FIN_WAIT_2 TIME_WAIT SYN SYN FIN FIN LISTEN SYN_RCVD ESTABLISHED CLOSE_WAIT LAST_ 3.1 Υπηρεσίες επιπέδου 3.2 Πολύπλεξη και αποπολύπλεξη 3.3 Ασυνδεσιστρεφής µεταφορά: UDP 3.4 Αρχές αξιόπιστης δεδοµένων 3.5 Συνδεσιστρεφής µεταφορά: TCP δοµή segment αξιόπιστη µεταφορά δεδοµένων έλεγχος ροής διαχείριση σύνδεσης 3.6 Αρχές ελέγχου 3.7 Έλεγχος στο TCP Επίπεδο Μεταφοράς 3-53 Επίπεδο Μεταφοράς 3-54 Αρχές ελέγχου Συµφόρηση: αίτια: το δίκτυο δεν µπορεί να ανταπεξέλθει στο φόρτο της κίνησης (µεγάλος αριθµός πηγών, µεγάλος όγκος δεδοµένων, υψηλός ρυθµός µετάδοσης των πηγών) αποτελέσµατα: απώλειες πακέτων (υπερχείλιση των buffers των δροµολογητών) µεγάλες καθυστερήσεις (αναµονή στους buffers των δροµολογητών) Έλεγχος : µηχανισµοί αποφυγής ή αντίδρασης στη συµφόρηση διαφέρει από τον έλεγχο ροής Επίπεδο Μεταφοράς 3-55 Αίτια/κόστος : σενάριο 1 δύο αποστολείς, δύο παραλήπτες ένας δροµολογητής, απεριόριστος αριθµός buffers χωρίς επαναµεταδόσεις φορτίο προσφερόµενο στο δροµολογητή: λ in ανά σύνδεση χωρητικότητα εξόδου R throughput σύνδεσης λ out λ out R/2 R/2 Host B καθυστέρηση Host A λ in R/2 λ in λ in : αρχικά δεδοµένα απεριόριστος αριθµός κοινών buffers στη ζεύξη εξόδου λ out ησυµφόρηση προκαλεί µεγάλες καθυστερήσεις αναµονής στην ουρά µέγιστο επιτευκτό throughput Επίπεδο Μεταφοράς 3-56 14

Αίτια/κόστος : σενάριο 2 ένας δροµολογητής, πεπερασµένος αριθµός buffers απώλειες πακέτων αξιόπιστες συνδέσεις επαναµεταδόσεις απωλεσθέντων segments λ in : ρυθµός αποστολής αρχικών δεδοµένων (εφαρµογή επίπεδο ) λ in : ρυθµός αποστολής αρχικών και επαναµεταδιδόµενων δεδοµένων ή φόρτος προσφερόµενος στο δίκτυο (επίπεδο δίκτυο) Host A λ in : αρχικά δεδοµένα λ out Αίτια/κόστος : σενάριο 2 a) Ιδανική περίπτωση: Έστω ότι ο host A γνωρίζει πότε υπάρχει ελεύθερος χώρος στο buffer και µόνο τότε στέλνει δεδοµένα δεν έχουµε απώλειες/επαναµεταδόσεις λ in = λ in = λ out < R/2 Host B λ' in : αρχικά δεδοµένα συν επαναµεταδιδόµενα δεδοµένα πεπερασµένος αριθµός κοινών buffers στη ζεύξη εξόδου λ out R/2 R/2 λ in = λ in απόδοση εξαρτάται από το µηχανισµό επαναµεταδόσεων ισχύει πάντοτε: λ in = λ out (goodput) Επίπεδο Μεταφοράς 3-57 Επίπεδο Μεταφοράς 3-58 Αίτια/κόστος : σενάριο 2 b) τέλεια επαναµετάδοση: Έστω ότι ο host A επαναµεταδίδει µόνο τα δεδοµένα που έχουν χαθεί λ in > λ out Για προσφερόµενο φόρτο λ in =R/2, το throughput είναι λ out = λ in =R/3 λ out Αίτια/κόστος : σενάριο 2 c) Έστω ότι ο host A επαναµεταδίδει δεδοµένα που έχουν καθυστερήσει χωρίς να έχουν χαθεί η ζεύξη µεταδίδει πολλαπλά αντίγραφα του ίδιου πακέτου Για την ίδια τιµή του λ out, η τιµή του λ in µεγαλύτερη από ότι στην περίπτωση της τέλειας επαναµετάδοσης R/2 R/3 επαναµεταδόσεις λ out R/2 R/3 λ out R/4 λ in R/2 λ in κόστος : περισσότερο έργο (επαναµεταδόσεις) για δεδοµένο goodput Επίπεδο Μεταφοράς 3-59 R/2 λ R/2 in λ in κόστος : σπατάλη χωρητικότητας που οφείλεται σε άσκοπες επαναµεταδόσεις λόγω υπερβολικών καθυστερήσεων Επίπεδο Μεταφοράς 3-60 15

Αίτια/κόστος : σενάριο 3 τέσσερις αποστολείς διαδροµές µε δύο δροµολογητές timeout/επαναµεταδόσεις Host A Ε: Τι συµβαίνει καθώς τα λ in και λ in αυξάνονται; λ in : αρχικά δεδοµένα λ' in : αρχικά δεδοµένα συν επαναµεταδιδόµενα δεδοµένα πεπερασµένος αριθµός κοινών buffers στη ζεύξη εξόδου λ out Host B Αίτια/κόστος : σενάριο 3 Για µικρές τιµές του λ in, οι buffers σπάνια υπερχειλίζουν και λ out λ in λ in Για µεγάλες τιµές του λ in και λ in, λ out 0 λ out R/2 Host D R 4 R 1 Host C λ in R 3 R 2 Άλλο ένα κόστος της : όταν ένα πακέτο απορρίπτεται, οποιαδήποτε upstream χωρητικότητα χρησιµοποιήθηκε για τη µετάδοση αυτού του πακέτου σπαταλιέται Επίπεδο Μεταφοράς 3-61 Επίπεδο Μεταφοράς 3-62 ιαφορετικές προσεγγίσεις στο πρόβληµα του ελέγχου ύο ευρείες κατηγορίες µεθόδων ελέγχου : Έλεγχος από άκρο σε άκρο: κανένα άµεσο feedback από το δίκτυο συµφόρηση συνάγεται από τις παρατηρούµενες απώλειες, καθυστερήσεις στα τερµατικά συστήµατα η προσέγγιση αυτή έχει υιοθετηθεί στο TCP Έλεγχος επιβοηθούµενος από το δίκτυο: οι δροµολογητές παρέχουν feedback στα τερµατικά συστήµατα ένα bit που υποδεικνύει συµφόρηση (DECbit, ATM EERC) ρητός ρυθµός για τον αποστολέα (ATM EERC) ακριβέστερος έλεγχος ρυθµού µετάδοσης αυξηµένη πολυπλοκότητα Κεφάλαιο 3 3.1 Υπηρεσίες επιπέδου 3.2 Πολύπλεξη και αποπολύπλεξη 3.3 Ασυνδεσιστρεφής µεταφορά: UDP 3.4 Αρχές αξιόπιστης δεδοµένων 3.5 Συνδεσιστρεφής µεταφορά: TCP δοµή segment αξιόπιστη µεταφορά δεδοµένων έλεγχος ροής διαχείριση σύνδεσης 3.6 Αρχές ελέγχου 3.7 Έλεγχος στο TCP Επίπεδο Μεταφοράς 3-63 Επίπεδο Μεταφοράς 3-64 16

Έλεγχος στο TCP Το TCP αναγκαστικά χρησιµοποιεί έλεγχο από άκρο σε άκρο: το IP δεν παρέχει πληροφορία Κάθε αποστολέας ελέγχει το ρυθµό µετάδοσης ως συνάρτηση της που αντιλαµβάνεται Τρόπος µεταβολής ρυθµού: µε τη µεταβλητή congestion window (CongWin): LastByteSent-LastByteAcked min{congwin, RcvWindow} Χονδρικά, για το ρυθµό αποστολής ισχύει: CongWin ρυθµός = bytes/sec Το παράθυρο CongWin µεταβάλλεται δυναµικά, ως συνάρτηση της που αντιλαµβάνεται ο αποστολέας Επίπεδο Μεταφοράς 3-65 Έλεγχος στο TCP Τρόπος µε τον οποίο ο αποστολέας αντιλαµβάνεται τη συµφόρηση: γεγονός απώλειας = timeout ή 3 διπλότυπα ack ο αποστολέας µειώνει το ρυθµό (CongWin)µετά από ένα γεγονός απώλειας Αλγόριθµος ελέγχου TCP Reno: Τρεις κύριοι µηχανισµοί: προσθετική αύξηση πολλαπλασιαστική µείωση (Additive Increase Multiplicative Decrease - AIMD) αργή εκκίνηση (slow start) αντίδραση σε γεγονότα timeout Επίπεδο Μεταφοράς 3-66 Προσθετική αύξηση πολλαπλασιαστική µείωση στο TCP πολλαπλασιαστική µείωση: υποδιπλασιασµός του CongWin µετά από κάθε γεγονός απώλειας παράθυρο congestion CongWin window 24 Kbytes 16 Kbytes 8 Kbytes αποφυγή προσθετική αύξηση: αύξηση του CongWin κατά 1 MSS κάθε όσο δεν συµβαίνουν γεγονότα απώλειας: ανίχνευση (probing) αύξηση του CongWin κατά MSS (MSS/CongWin) µε κάθε λαµβανόµενη επιβεβαίωση Αργή εκκίνηση στο TCP αρχική τιµή CongWin = 1 MSS αρχικός ρυθµός αποστολής MSS/ π.χ. MSS = 500 bytes, = 200 msec αρχικός ρυθµός MSS/ = 20 kbps ενδεχοµένως διαθέσιµη χωρητικότητα >> MSS/ γραµµική αύξηση ρυθµού πολύ αργή σε σχέση µε διαθέσιµη χωρητικότητα επιθυµητή η ταχεία αύξηση του ρυθµού σε επιτρεπτό επίπεδο στο ξεκίνηµα της σύνδεσης ο αποστολέας αυξάνει το ρυθµό του εκθετικά µέχρι το πρώτο γεγονός απώλειας (αργή εκκίνηση αντί αποφυγή ) Σύνδεση TCP µεγάλης διάρκειας time Επίπεδο Μεταφοράς 3-67 Επίπεδο Μεταφοράς 3-68 17

Αργή εκκίνηση στο TCP (συνέχεια) στο ξεκίνηµα της σύνδεσης ο ρυθµός αυξάνει εκθετικά µέχρι το πρώτο γεγονός απώλειας διπλασιασµός της τιµής CongWin κάθε επιτυγχάνεται µε την αύξηση του CongWin κατά 1MSSµε κάθε λαµβανόµενη επιβεβαίωση Αργή εκκίνηση (slow start): µικρός αρχικός ρυθµός αποστολής που όµως αυξάνεται εκθετικά Host A Host B ένα segment δύο segments τέσσερα segments Επίπεδο Μεταφοράς 3-69 ιευκρίνιση Μετά από 3 διπλότυπα : CongWin µειώνεται στο µισό στη συνέχεια το παράθυρο αυξάνεται γραµµικά Όµως µετά από timeout: CongWin παίρνει τιµή 1 MSS στη συνέχεια το παράθυρο αυξάνεται εκθετικά έως ένα κατώφλι και µετά αυξάνεται γραµµικά µέγεθος παραθύρου (segments) 18 16 14 12 10 8 6 4 2 0 αργή εκκίνηση γεγονός απώλειας αποφυγή αργή εκκίνηση 1 2 3 4 5 6 7 8 9 10 11 12 3 διπλότυπα timeout αποφυγή Φιλοσοφία: 3 διπλότυπα είναι ένδειξη ότι το δίκτυο είναι σε θέση να παραδώσει µερικά segments ένα timeout πριν από 3 διπλότυπα είναι πιο ανησυχητικό σε Επίπεδο Μεταφοράς 3-70 ιευκρίνιση (συνέχεια) TCP Tahoe, TCP Reno, TCP Vegas ηαύξηση µεταβάλλεται από εκθετική σε γραµµική όταν η τιµή του CongWin φθάσει το µισό της τιµής πριν από το timeout Υλοποίηση: Μεταβλητή Threshold Όταν συµβεί ένα γεγονός απώλειας, η µεταβλητή Threshold παίρνει τιµή ίση µε το µισό της τιµής που είχε το CongWin ακριβώς πριν από το γεγονός µέγεθος παραθύρου (segments) 18 16 14 12 10 8 6 4 2 0 κατώφλι 1 2 3 4 5 6 7 8 9 10 11 12 σε TCP Tahoe: αργή εκκίνηση µετά από κάθε γεγονός απώλειας TCP Reno: ταχεία επαναφορά (fast recovery) µετά από 3 διπλότυπα µέγεθος παραθύρου (segments) 18 16 14 12 10 8 6 4 2 0 3 διπλότυπα ταχεία επαναφορά 1 2 3 4 5 6 7 8 9 10 11 12 TCP Vegas: ανίχνευση πριν από την εµφάνιση απωλειών συµφόρηση προβλέπεται από τους παρατηρούµενους χρόνους γραµµική µείωση του ρυθµού αποστολής όταν επίκειται συµφόρηση TCP Reno TCP Tahoe σε Επίπεδο Μεταφοράς 3-71 Επίπεδο Μεταφοράς 3-72 18

Σύνοψη: Έλεγχος στο TCP Όταν CongWin < Threshold, ο αποστολέας βρίσκεται στη φάση αργής εκκίνησης και CongWin αυξάνεται εκθετικά Όταν CongWin > Threshold, ο αποστολέας βρίσκεται στη φάση αποφυγής και CongWin αυξάνεται γραµµικά Όταν ληφθούν τρία διπλότυπα, Threshold CongWin/2 και CongWin Threshold Όταν συµβεί ένα timeout, Threshold CongWin/2 και CongWin 1 MSS Έλεγχος TCP Κατάσταση Slow Start (SS) Congestion Avoidance (CA) SS ή CA SS ή CA SS ή CA Timeout Γεγονός Λήψη για δεδοµένα που ήταν προηγουµένως ανεπιβεβαίωτα Λήψη για δεδοµένα που ήταν προηγουµένως ανεπιβεβαίωτα Τριπλό διπλότυπο ιπλότυπο ράση Αποστολέα TCP CongWin = CongWin + MSS, Εάν (CongWin > Threshold), τότε µετάβαση στην κατάσταση Congestion Avoidance CongWin = CongWin+MSS * (MSS/CongWin) Threshold = CongWin/2, CongWin = Threshold, Μετάβαση στην κατάσταση Congestion Avoidance Threshold = CongWin/2, CongWin = 1 MSS, Μετάβαση στην κατάσταση Slow Start Αύξηση µετρητή διπλότυπων για το segment που επιβεβαιώνεται Σχόλιο Έχει ως αποτέλεσµα το διπλασιασµό τουcongwin κάθε Αθροιστική αύξηση, µε αποτέλεσµα την αύξηση του CongWin κατά 1 MSS κάθε Ταχεία ανάκαµψη µετά από πολλαπλασιαστική µείωση Η τιµή του CongWin δεν πέφτει κάτω από 1 MSS Μετάβαση σε slow start Οι µεταβλητές CongWin και Threshold δε µεταβάλλονται Επίπεδο Μεταφοράς 3-73 Επίπεδο Μεταφοράς 3-74 Μέσο throughput σύνδεσης TCP αγνοούµε τις φάσεις αργής εκκίνησης µετά από timeout (µικρή διάρκεια) έστω W η τιµή του CongWin όταν συµβαίνει ένα γεγονός απώλειας θεωρούµε ότι W σταθ., σταθ. ορυθµός της σύνδεσης αυξάνεται γραµµικά από W/2 σε W/ (αύξηση κατά MSS/ κάθε ) µέσο throughput σύνδεσης = CongWin/ W 0.75W ίκαιη κατανοµή χωρητικότητας στο TCP Έστω ότι K συνδέσεις TCP µοιράζονται µία ζεύξη χωρητικότητας R Η ζεύξη αποτελεί bottleneck : οι υπόλοιπες ζεύξεις από τις οποίες διέρχονται οι συνδέσεις έχουν χωρητικότητα πολύ µεγαλύτερη από αυτήν του bottleneck Ένας µηχανισµός ελέγχου χαρακτηρίζεται ως δίκαιος εάν καθεµία από τις K συνδέσεις έχει µέσο ρυθµό µετάδοσης ίσο περίπου µε R/K Ο µηχανισµός προσθετικής αύξησης-πολλαπλασιαστικής µείωσης είναι δίκαιος TCP σύνδεση 1 W 2 Επίπεδο Μεταφοράς 3-75 TCP σύνδεση 2 δροµολογητής bottleneck χωρητικότητα εξόδου R Επίπεδο Μεταφοράς 3-76 19

ίκαιη κατανοµή χωρητικότητας στο TCP Υποθέσεις: ύο συνδέσεις TCP µοιράζονται µία ζεύξη χωρητικότητας R Από τη ζεύξη δεν διέρχονται άλλες συνδέσεις TCP ή κίνηση UDP Οι συνδέσεις έχουν το ίδιο MSS και (οπότε εάν έχουν το ίδιο CongWin θα έχουν και το ίδιο throughput) Οι συνδέσεις εφαρµόζουν τον µηχανισµό προσθετικής αύξησηςπολλαπλασιαστικής µείωσης (αγνοείται η σύντοµη φάση αργής εκκίνησης) Ισοκατανοµή χωρητικότητας στο TCP Two συνδέσεις ανταγωνίζονται για τη χωρητικότητα: Η προσθετική αύξηση έχει ως αποτέλεσµα την αύξηση του συνολικού throughput κατά µήκος µίας ευθείας µε κλήση 1 Η πολλαπλασιαστική µείωση έχει ως αποτέλεσµα τη µείωση του συνολικού throughput κατά µήκος µίας ευθείας που διέρχεται από την αρχή των αξόνων R ισοκατανοµή χωρητικότητας TCP σύνδεση 1 TCP σύνδεση 2 δροµολογητής bottleneck χωρητικότητα εξόδου R Επίπεδο Μεταφοράς 3-77 throughput σύνδεσης 2 Α (R 1, R 2 ) throughput σύνδεσης 1 απώλεια: υποδιπλασιασµός παραθύρου αποφυγή : προσθετική αύξηση απώλεια: υποδιπλασιασµός παραθύρου αποφυγή : προσθετική αύξηση R Επίπεδο Μεταφοράς 3-78 UDP ίκαιη κατανοµή χωρητικότητας Οι εφαρµογές πολυµέσων δεν χρησιµοποιούν συνήθως TCP: αποφεύγουν τον περιορισµό του ρυθµού από τον έλεγχο Προτιµούν να χρησιµοποιούν UDP: εισάγουν στο δίκτυο audio/ video µε σταθερό ρυθµό, ανέχονται τις απώλειες απαιτούνται βελτιωµένοι µηχανισµοί ελέγχου Παράλληλες συνδέσεις TCP µία εφαρµογή µπορεί να χρησιµοποιεί παράλληλες συνδέσεις ανάµεσα σε 2 hosts π.χ. Web browsers Παράδειγµα: ζεύξη χωρητικότητας R υποστηρίζει 9 συνδέσεις νέα εφαρµογή ζητά 1 σύνδεση TCP, λαµβάνει 1/10 της χωρητικότητας της νέα εφαρµογή ζητά 11 συνδέσεις TCP, λαµβάνει 1/2 της χωρητικότητας της! Επίπεδο Μεταφοράς 3-79 Μοντελοποίηση καθυστέρησης στο TCP Καθυστέρηση (latency): που απαιτείται από τη στιγµή που ένας client εγκαθιδρύει µία σύνδεση TCP µε ένα server µε σκοπό να ζητήσει ένα αντικείµενο µέχρι τη στιγµή που θα ολοκληρωθεί η λήψη του αντικειµένου από τον client Εάν αγνοήσουµε τη συµφόρηση, παράγοντες που επηρεάζουν την καθυστέρηση είναι: εγκαθίδρυση σύνδεσης TCP µετάδοση δεδοµένων µηχανισµός αργής εκκίνησης Μοντέλο : Ο client και ο server συνδέονται µεταξύ τους µε µία ζεύξη χωρητικότητας R client ζεύξη χωρητικότητας R server Επίπεδο Μεταφοράς 3-80 20