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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

Transmission Control Protocol. Transmission Control Protocol

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

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

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

Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα Πρωτόκολλα και Αρχιτεκτονική Δικτύου)

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

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

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

ΚΕΦΑΛΑΙΟ 1.7. Πρωτόκολλα και Αρχιτεκτονική Δικτύου

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών Δίκτυα υπολογιστών. (και το Διαδίκτυο)

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

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

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

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

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

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

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

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

Τι είναι ένα δίκτυο υπολογιστών; Αρχιτεκτονική επιπέδων πρωτοκόλλων. Δικτυακά πρωτόκολλα

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

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

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

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

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

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

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

Δίκτυα Υπολογιστών. Ασκήσεις επανάληψης

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

Πρωτόκολλα Επικοινωνίας Πρωτόκολλο IP

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

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

Μάθημα 6: Αρχιτεκτονική TCP/IP

Α2. Να γράψετε τους αριθμούς 1-5 από τη Στήλη Α και δίπλα το γράμμα της Στήλης Β που δίνει τη σωστή αντιστοίχηση.

1.8 Το μοντέλο OSI 1 / 33

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η

Δίκτυα Υπολογιστών I

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

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

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

Ενότητα 1. Εισαγωγή στις βασικές έννοιες των ικτύων ΗΥ

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

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

α. Το μέγιστο μήκος δεδομένων του ωφέλιμου φορτίου του πλαισίου Ethernet είναι 1500 οκτάδες. ΣΩΣΤΟ

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

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ / ΕΠΑΛ(Α & Β ΟΜΑΔΑ) ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 11/12/2011 ΑΠΑΝΤΗΣΕΙΣ

AEI Πειραιά Τ.Τ. Τμ. Μηχ/κων Αυτοματισμού ΤΕ. Δίκτυα Μετάδοσης Δεδομένων. Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές

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

Μάθημα 4: Πρότυπα, Πρωτόκολλα & Υπηρεσίες

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

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

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

Κεφάλαιο > Ε Π Α Ν Α Λ Η Ψ Η Επικοινωνιακό Υποδίκτυο / TCP / UDP. Σελ

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

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η. Αρχές Δικτύων Επικοινωνιών

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

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

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ 1 στα Δίκτυα Υπολογιστών

Επαναληπτικές Ασκήσεις Μαθήματος

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

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών

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

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

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

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

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

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

Δίκτυα Υψηλών Ταχυτήτων Ενότητα 7: Διευθυνσιοδότηση Internet Protocol (IP) v4

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

Εργαστηριακή Άσκηση 7 Πρωτόκολλα TCP και UDP

Επικοινωνία με μηνύματα. Κατανεμημένα Συστήματα 1

Transcript:

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

Ιεραρχίες Πρωτοκόλλων σελ 2

Ιεραρχίες Πρωτοκόλλων Πρωτόκολλο είναι ένα σύνολο κανόνων που απαιτούνται για να επιτύχουμε την ανταλλαγή δεδομένων, και επομένως τη επικοινωνία, μεταξύ δύο ή περισσότερων απομακρυσμένων οντοτήτων μέσω ενός δικτύου. Για τον καλύτερο σχεδιασμό και την απλοποίηση της επικοινωνίας υπάρχει κατανομή των απαιτούμενων λειτουργιών σε επίπεδα (στρώματα/layers) πρωτοκόλλων. Ε την κατανομή αυτή δημιουργείται μια ιεραρχία πρωτοκόλλων (Protocol Hierarchy). Κάθε επίπεδο εκτελεί συγκεκριμένες λειτουργίες, χρησιμοποιεί τις υπηρεσίες του αμέσως κατώτερου επιπέδου και παρέχει τις υπηρεσίες του στο αμέσως ανώτερο επίπεδο. Κάθε επίπεδο επικοινωνεί (νοητά) μέσω ενός πρωτοκόλλου με ομότιμο (peer) επίπεδο. σελ 3

Ιεραρχίες Πρωτοκόλλων (Μοντέλο OSI) Το μοντέλο OSI είναι η περισσότερο καλά δομημένη αρχιτεκτονική (ιεραρχία) πρωτοκόλλων. Στην πράξη το μοντέλο OSI έχει υποσκελιστεί από την ιεραρχία πρωτοκόλλων που εφαρμόστηκε de facto στο Διαδίκτυο. Η ιεραρχία αυτή ονομάζεται Στοίβα Πρωτοκόλλων του IP/TCP (IP/TCP Protocol Stack) από τα δύο δημοφιλέστερα πρωτόκολλα του διαδικτύου το Internet Protocol (IP) και το Transmission Control Protocol (TCP). σελ 4

Ο Ρόλος των Επιπέδων στην ιεραρχία OSI Φυσικό Επίπεδο (Physical Layer): Μετάδοση bits σε ένα κανάλι επικοινωνίας. Επίπεδο Σύνδεσης Δεδομένων ή Επίπεδο Ζεύξης (Data Link Layer): Η κύρια αποστολή του επιπέδου είναι να μετασχηματίσει το μέσο μετάδοσης σε μια γραμμή χωρίς σφάλματα μετάδοσης. Επίσης χειρίζεται θέματα πρόσβασης στο κανάλι επικοινωνίας αν υπάρχει κοινό μέσο. Επίπεδο Δικτύου (Network Layer): Μία βασική λειτουργία είναι η δρομολόγηση πακέτων από την αφετηρία στον προορισμό τους. Το επίπεδο δικτύου φροντίζει για την απόκρυψη των ιδιαίτερων χαρακτηριστικών του υποδικτύου, ώστε να παρέχεται στα ανώτερα επίπεδα ένας ενιαίος τρόπος χρήσης του δικτύου. Επίπεδο Μεταφοράς (Transport Layer): Η βασική λειτουργία του επιπέδου είναι η αποδοχή δεδομένων από τα ανώτερα επίπεδα ή διάσπαση αυτών σε μικρότερες μονάδες εάν χρειαστεί, η μεταφορά τους στο επίπεδο δικτύου και η διασφάλιση ότι όλα τα τμήματα φτάνουν σωστά στην άλλη πλευρά (από-άκρη-σε-άκρη/ end-toend). Επίπεδο Συνόδου (Session Layer): Το επίπεδο συνόδου επιτρέπει σε χρήστες διαφορετικών μηχανημάτων να εγκαθιστούν συνόδους μεταξύ τους. Μια σύνοδος, μπορεί να χρησιμοποιηθεί για να μεταφέρει ένα αρχείο μεταξύ δύο μηχανών παρέχοντας συγχρονισμό στη μεταφορά (μετά από μια διακοπή, για παράδειγμα). Μία από τις υπηρεσίες που παρέχει το επίπεδο συνόδου είναι η δυνατότητα διαχείρισης ελέγχου ενός διαλόγου. Επίπεδο Παρουσίασης (Presentation Layer): Ενώ όλα τα κατώτερα επίπεδα ενδιαφέρονται μόνο για την αξιόπιστη μετακίνηση bits από το ένα μέρος στο άλλο, το επίπεδο παρουσίασης ενδιαφέρεται για το συντακτικό και τη σημασιολογία των πληροφοριών που μεταδίδονται. Επίπεδο Εφαρμογής (Application Layer): Το επίπεδο εφαρμογής μπορεί ανάλογα με τις ανάγκες του χρήστη να περιέχει μια ποικιλία πρωτοκόλλων που υλοποιούν διάφορες κατανεμημένες λειτουργίες (http, ftp, e-mail κλπ). σελ 5

Πρωτόκολλα Επιπέδου Μεταφοράς σελ 6

To Επίπεδο Μεταφοράς στο Διαδίκτυο Το Διαδίκτυο υιοθετεί ένα μοντέλο επικοινωνίας με 5 επίπεδα. Σε σχέση με το μοντέλο OSI παραλείπονται τα επίπεδα Συνόδου (Session) και Παρουσίασης (Presentation) με την αντίστοιχη λειτουργικότητα (εφόσον είναι αναγκαία) να ανατίθεται στο Επίπεδο Εφαρμογής (Application). Η βασική λειτουργία του Επίπεδου Μεταφοράς (Transport Layer) είναι η αξιόπιστη μεταφορά δεδομένων μεταξύ εφαρμογών από-άκρη-σε-άκρη (end-toend). Πρόκειται για μια λογική σχέση που βοηθάει τις εφαρμογές να ανταλλάσουν δεδομένα. σελ 7

Λειτουργίες και Πρωτόκολλα Επιπέδου Μεταφοράς To Επίπεδο Μεταφοράς (Transport Layer) αναλαμβάνει την μεταφορά της πληροφορίας μεταξύ απομακρυσμένων οντοτήτων του επιπέδου εφαρμογής (εφαρμογές) από-άκρη-σε-άκρη (δηλαδή μεταξύ απομακρυσμένων Host). Για να πετύχει την αποστολή του εγκαθιστά μια λογική επικοινωνία από-άκρη-σε-άκρη (end-toend) μεταξύ των απομακρυσμένων host. Το δίκτυο παρέχει τον μηχανισμό μεταφοράς των πακέτων και οι κόμβοι του δικτύου δεν ασχολούνται με την πληροφορία που ανταλλάσσεται στο επίπεδο μεταφοράς ή στο επίπεδο εφαρμογής μεταξύ των απομακρυσμένων hosts. Η πληροφορία αυτή είναι διάφανη (transparent) στους κόμβους του δικτύου αξιοποιείται μόνο στα άκρα (απομακρυσμένοι hosts). Οι βασικές του λειτουργίες του επιπέδου μεταφοράς είναι: Αποστολή Λήψη Τεμαχίζει τα μηνύματα εφαρμογής και τα διοχετεύει στο στρώμα δικτύου Πολυπλέκει (multiplexing) τα δεδομένα που προέρχονται από το στρώμα εφαρμογής Συναρμολογεί τα τεμάχια σε μηνύματα και τα διοχετεύει στο επίπεδο εφαρμογής Αποπολυπλέκει (demultiplexing) τα δεδομένα έτσι ώστε να τα παρέχει στο στρώμα εφαρμογής Τα πρωτόκολλα μεταφοράς του Διαδικτύου είναι: TCP: Transmission Control Protocol UDP: User Datagram Protocol σελ 8

Η έννοια της Πολυπλεξίας στο Επίπεδο Μεταφοράς του Διαδικτύου Οι Δικτυακές Εφαρμογές (Network Applications) υλοποιούνται στο Επίπεδο Εφαρμογής (Application Layer). Μια Δικτυακή Εφαρμογή αποτελείται από δύο ή περισσότερες απομακρυσμένες Διεργασίες (Processes) που επικοινωνούν μεταξύ τους. Για να επικοινωνήσουν δύο απομακρυσμένες Διεργασίες χρησιμοποιούν τις υπηρεσίες μιας Διεπαφής (Interface) η οποία ονομάζεται Socket. Στην ουσία πρόκειται για ένα Application Programming Interface (API) μεταξύ της Εφαρμογής (Application) και του Δικτύου. Πολυπλεξία (Multiplexing) είναι η δυνατότητα που έχει το επίπεδο μεταφοράς να λαμβάνει δεδομένα από πολλές Διεργασίες και να τα προωθεί προς το δίκτυο. Από-πολυπλεξία (De-multiplexing) είναι η δυνατότητα που έχει το επίπεδο μεταφοράς να λαμβάνει δεδομένα από το δίκτυο και να τα προωθεί προς την κατάλληλη εφαρμογή. Για να γίνει δυνατή η πολυπλεξία και η από-πολυπλεξία είναι απαραίτητη η χρήση κατάλληλων Αναγνωριστικών (Identifiers) δηλαδή είναι απαραίτητος ένας μηχανισμός Διευθυνσιοδότησης (Addressing). Όπως θα δούμε τα αναγνωριστικά ονομάζονται θύρες (ports) στην περίπτωση των διαδικτυακών εφαρμογών. Παράδειγμα: Στην εικόνα το Επίπεδο Μεταφοράς πολυπλέκει/αποπολυπλέκει τα δεδομένα που απευθύνονται από/προς τις Εφαρμογές P1 & P2. σελ 9

Transmission Control Protocol (TCP) σελ 10

Γενικές αρχές του TCP To TCP είναι ένα πρωτόκολλο με σύνδεση (connection-oriented protocol). Πριν να αρχίσει η μετάδοση δεδομένων, προηγείται η εγκατάσταση μιας λογικής σύνδεσης μεταξύ των οντοτήτων που ανταλλάσσουν δεδομένα. Το TCP υλοποιεί μετάδοση σημείο-προς-σημείο (point-to-point) Υπάρχει μια πηγή και ένας προορισμός Το TCP είναι bi-directional Οι δύο κατευθύνσεις μετάδοσης λειτουργούν συγχρόνως και ανεξάρτητα. Παρέχει τις υπηρεσίες του στο επίπεδο εφαρμογής με τέτοιο τρόπο, ώστε να αναβαθμίζει την υπηρεσία που παρέχει ένα αναξιόπιστο επίπεδο δίκτυο. Η υπηρεσία δικτύου του IP είναι εξαιρετικά απλή, αποδοτική και γρήγορη στη λειτουργία της. Θεωρείται όμως αναξιόπιστη εφόσον δεν προσφέρει επιβεβαίωση ότι τα πακέτα παραλήφθηκαν από τον προορισμό ούτε φροντίζει με κανένα τρόπο να φτάσουν σε σειρά. Αυτό το θέμα αναλαμβάνει να το επιλύσει το TCP στην ουσία αναβαθμίζοντας την υπηρεσία που προσφέρει το IP. Το TCP χρησιμοποιείται από τα περισσότερα πρωτόκολλα επιπέδου εφαρμογής Για το λόγο αυτό η ιεραρχία (στοίβα) πρωτοκόλλων του διαδικτύου αναφέρεται και σαν TCP/IP (protocol) stack. σελ 11

Η ροή δεδομένων στο TCP Στην πηγή τo TCP λαμβάνει μια ροή δεδομένων (data stream) από το σημείο διεπαφής (Socket) με το επίπεδο εφαρμογής. Η ροή αυτή αποθηκεύεται διότι από την εγκατάσταση της σύνδεσης έχει αποδοθεί αποθηκευτικός χώρος (send buffer). Στη συνέχεια χωρίζεται σε κομμάτια κατάλληλου μεγέθους, σε καθένα από τα οποία προστίθεται μια TCP επικεφαλίδα (header). Έτσι, δημιουργείται ένα TCP segment (έτσι αποκαλείται το TCP πακέτο). To segment αυτό έχει ένα Maximum Segment Size (MSS) που εξαρτάται από Maximum Transmission Unit (MTU) που μπορεί να σταλεί στο επίπεδο δεδομένων του τοπικού δικτύου. Το segment στη συνέχεια ενσωματώνεται (encapsulated) σε ένα IP πακέτο, το οποίο δρομολογείται μέσω του διαδικτύου. Στον προορισμό γίνεται η αντίστροφη διαδικασία. σελ 12

Η δομή του TCP Segment Source port (16 bits) : Θύρα Πηγής Destination port (16 bits): Θύρα Προορισμού Παρατήρηση: H Source Port και Destination Port χρησιμοποιούνται για την σωστή πολυπλεξία/αποπολυπλεξία των δεδομένων. Κατά συνέπεια ο συνδυασμός τους πρέπει να είναι μοναδικός για κάθε ζευγάρι host πηγής-προορισμού. Sequence number (32 bits): Αριθμός Ακολουθίας SYN flag = 1, τότε πρόκειται για τον αρχικό sequence number SYN flag = 0, τότε πρόκειται για τον τρέχοντα sequence number του segment για την εγκατεστημένη σύνδεση. Παρατήρηση: To TCP στην ουσία μετράει των αριθμό των byte που στέλνει (Sequence Number) ή επιβεβαιώνει (Acknowledgement Number). Acknowledgment number (32 bits): Αριθμός Επιβεβαίωσης ACK flag = 1, τότε η τιμή σημαίνει τον επόμενο sequence number που ο προορισμός περιμένει. Αυτό σημαίνει ότι ο προορισμός επιβεβαιώνει την σωστή παραλαβή όλων των προηγούμενων segment. ACK flag =0, τότε η τιμή του Acknowledged Νumber αγνοείται. σελ 13

Η δομή του TCP Segment Header Length (HLEN) ή offset (4 bits): Ορίζει το μέγεθος της Επικεφαλίδας του Segment (20-60 bytes) Reserved (3 bits): Το πεδίο αυτό προβλέπεται για μελλοντική χρήση. Explicit Congestion Notification (ECN) (3 bits): Επιτρέπει σηματοδοσία σε περίπτωση συμφόρησης (congestion) Flags (6 bits) URG (1 bit), το Urgent Bit υπογραμμίζει ότι το πεδίο Urgent pointer είναι σημαντικό ACK (1 bit), το Ack bit σημαίνει ότι απαιτείται Acknowledgment. Όλα τα segments μετά το αρχικό SYN packet πρέπει να έχουν αυτό το flag. PSH (1 bit), το Push bit, ζητάει να σταλθεί η αποθηκευμένη πληροφορία προς την εφαρμογή. RST (1 bit), το Reset bit, αναφέρει ότι το TCP δεν αναγνωρίζει την σύνδεση και ζητάει επανεγκατάσταση (reset). SYN (1 bit) το Synchronize bit, μόνο το πρώτο πακέτο έχει το bit αυτό στην τιμή 1, στην πράξη αυτό σημαίνει ότι έχουμε εγκατάσταση σύνδεσης με τη χρήση του bit αυτού. FIN (1 bit) το Final bit, σημαίνει ότι δεν αναμένονται άλλα δεδομένα από τον αποστολέα. Άρα, στην πράξη σημαίνει ότι έχουμε απεγκατάσταση σύνδεσης με τη χρήση του bit αυτού. σελ 14

Η δομή του TCP Segment Window size (16 bits), πρόκειται για το μέγεθος του Παραθύρου Λήψης (Receive Window), το οποίο σηματοδοτεί τον αριθμό των bytes που ο αποστολέας είναι σε θέση τη στιγμή αυτή να λάβει επιπρόσθετα αυτών που έχει ήδη κάνει επιβεβαιώσει με ACK. Checksum (16 bits): Το πεδίο αυτό χρησιμοποιείται για τον έλεγχο λάθους της επικεφαλίδας του TCP. Urgent pointer (16 bits): Το πεδίο αυτό προσδιορίζει που τελειώνουν τα urgent data. Options (0 320 bits, 0-40 bytes): Υπάρχουν μερικές επιπρόσθετες επιλογές που μπορούν να χρησιμοποιηθούν από το πρωτόκολλο. Αρκετές από αυτές είναι παρωχημένες. σελ 15

Διευθυνσιοδότηση (Παράδειγμα 1) Η χρήση των Αριθμών Θύρας Πηγής και Προορισμού αναδεικνύεται στο παράδειγμα. Οι Διευθύνσεις Θύρας Πηγής και Προορισμού αντιστρέφονται ανάλογα με την κατεύθυνση μετάδοσης. Ο Αριθμός Θύρας (Port Number) είναι ένας αριθμός 16-bit από το 0 ως το 65535. Οι αριθμοί θύρας από το 0 ως το 1023 ονομάζονται Πασίγνωστοι (Well-known) και χρησιμοποιούνται από γνωστά και προτυποποιημένα πρωτόκολλά (π.χ. στο HTTP αντιστοιχεί η θύρα 80 και στο FTP αντιστοιχεί η θύρα 21). Η λίστα με τις Πασίγνωστες Θύρες δίνεται στο RFC 1700. σελ 16

Παραδείγματα Πασίγνωστων Θυρών Θύρα Πρωτόκολλο Χρήση 21 23 Telnet 25 80 110 FTP (File Transfer Protocol) SMTP (Simple Mail Transfer Protocol) HTTP (HyperText Transfer Protocol) POP-3 (Post Office Protocol version 3) Μεταφορά Αρχείων (File Transfer) Απομακρυσμένη Πρόσβαση (Remote login) Αποστολή E-mail World Wide Web Παραλαβή e-mail σελ 17

Διευθυνσιοδότηση (Παράδειγμα 2) Η χρήση των Αριθμών Θύρας Πηγής και Προορισμού στην περίπτωση που δύο clients από δύο διαφορετικούς host προσπαθούν να προσπελάσουν ένα Web server αναδεικνύεται στο συγκεκριμένο παράδειγμα. O Host C έχει συγχρόνως πρόσβαση στον ίδιο Server B από δύο ανεξάρτητες διεργασίες. O Host A έχει πρόσβαση στο Server B από μια διεργασία. Έχουμε επικεντρώσει στη μια κατεύθυνση και παρατηρούμε ότι η Θύρα Προορισμού σε όλες τις περιπτώσεις είναι η ίδια εφόσον μιλάμε για web service (Θύρα 80). Ο συνδυασμός Διεύθυνση IP (Πηγής/Προορισμού) και Θύρα (Πηγής/Προορισμού) οδηγεί σε μοναδικότητα της επικοινωνίας. Ο Εξυπηρετητής (Server) έχει ενεργοποιήσει μια διεργασία (process) για κάθε πελάτη (client). σελ 18

Εγκατάσταση Σύνδεσης To TCP χρησιμοποιεί την τριπλή χειραψία (three way handshake) για την εγκατάσταση της σύνδεσης επιπέδου μεταφοράς Βήμα 1: SYN Το segment με το SYN bit = 1 ισοδυναμεί με αίτηση εγκατάσταση σύνδεσης από τη μεριά του client Βήμα 2: SYNACK Το segment με SYN=1 και ACK number τον επόμενο αναμενόμενο αριθμό byte από τη μεριά του Server χρησιμοποιείται σαν επιβεβαίωση της εγκατάστασης από τη μεριά του Server Βήμα 3: ACK Το segment με SYN=0 και ACK number τον επόμενο αναμενόμενο αριθμό byte από τη μεριά του Client χρησιμοποιείται σαν τελική επιβεβαίωση της εγκατάστασης από τη μεριά του Server σελ 19

Απεγκατάσταση Σύνδεσης To TCP χρησιμοποιεί την χειραψία (handshake) για την απεγκατάσταση της σύνδεσης επιπέδου μεταφοράς Βήμα 1: FIN To FINal Bit =1 σημαίνει ότι η μία πλευρά ζητάει τον τερματισμό της σύνδεσης. Βήμα 2: ACK Το ACK σημαίνει ότι η αίτηση τερματισμού παραλήφθηκε επιτυχώς. Η διαδικασία απεγκατάστασης μπορεί να αρχίσει από οποιαδήποτε πλευρά αλλά και οι δύο πλευρές πρέπει να την εκτελέσουν. Άρα, πρόκειται για διπλή απεγκατάσταση, εφόσον έχουμε και Πλήρως Αμφίδρομη (Full Duplex) επικοινωνία. Στο τέλος της διαδικασίας και αφού μεσολαβήσει κάποιο χρονικό διάστημα όλοι οι πόροι των συστημάτων απελευθερώνονται. σελ 20

Sequence Numbers and Acknowledgments Το TCP βλέπει την ανταλλαγή δεδομένων σαν μια ροή (ακολουθία) από bytes και όχι μια ροή από μηνύματα. Άρα, η αρίθμηση αναφέρεται επίσης σε bytes. Παράδειγμα Έστω ότι έχουμε ένα αρχείο 500,000 bytes και το Maximum Segment Size (MSS) είναι 1000 Byte. Το αρχείο θα χωριστεί σε 500 segments. Έστω για απλούστευση ότι το πρώτο byte αριθμείται με 0. Sequence numbers: O αύξων αριθμός του πρώτου byte από το segment που αποστέλλει η πηγή. Στο παράδειγμα το πρώτο segment θα πάρει τον sequence number 0 Το δεύτερο segment θα πάρει τον sequence number 1000 κλπ ώσπου να ολοκληρωθεί ο αριθμός των bytes προς αποστολή. Acknowledge numbers: Acknowledge Number είναι ο αύξων αριθμός του επόμενου byte από το τελευταίο byte του τελευταίου segment που παραλήφθηκε σε σωστή σειρά. Σηματοδοτεί το επόμενο byte που αναμένει να παραλάβει ο προορισμός. Άρα, αν στο παράδειγμα έχει παραληφθεί το 2ο segment, τότε το acknowledge number θα είναι το 2,000. Με βάση τη λογική αυτή το TCP παρέχει cumulative (σωρευτικές) acknowledgments. σελ 21

Κύρια χαρακτηριστικά της αξιόπιστης λειτουργίας του TCP Χαμένα (lost) segments γίνονται αντιληπτά και αναμεταδίδονται Τα χαμένα segments γίνονται αντιληπτά στην πηγή με βάση την έλλειψη αντίστοιχου ACK από τον προορισμό H έλλειψη γίνεται αντιληπτή μετά την πάροδο ενός Χρονομέτρου Αναμετάδοσης (Retransmission Timer). Η πηγή πρέπει να αποφασίσει πόσο θα περιμένει πριν αναμεταδώσει το segment. Κατεστραμμένα (Corrupted) segments (invalid checksum) γίνονται αντιληπτά και αναμεταδίδονται Τα κατεστραμμένα segments απορρίπτονται στον προορισμό, χωρίς να σταλθεί επιβεβαίωση και άρα γίνονται αντιληπτά με βάση την έλλειψη αντίστοιχου ACK (όπως και τα χαμένα segments). H έλλειψη γίνεται επίσης αντιληπτή μετά την πάροδο του Retransmission Timer. Διπλά (Duplicate) segments γίνονται αντιληπτά στον προορισμό (με χρήση του Sequence Number) και αγνοούνται Παρόλα αυτά στέλνεται πίσω στην πηγή acknowledgment για κάθε segment που παραλαμβάνεται σωστά στον προορισμό. Άρα, παραλαβή διπλού segment από τον προορισμό σημαίνει επίσης αποστολή διπλού ACK από τον προορισμό προς την πηγή. Εκτός σειράς segment γίνονται αντιληπτά στον προορισμό και αναδιατάσσονται εφόσον ο προορισμός το επιτρέπει. Σε κάθε περίπτωση μόνο segment που έχουν μπει στη σειρά επιβεβαιώνονται με ACK. Χαμένα ACK μπορεί να οδηγήσουν λανθασμένα στην αναμετάδοση του πακέτου από την πηγή. Στην περίπτωση αυτή θα έχουμε διπλά segments στον προορισμό, ο οποίος θα ξαναστείλει επιβεβαίωση με ACK. σελ 22

Κύρια χαρακτηριστικά της αξιόπιστης λειτουργίας του TCP Ο αριθμός της ACK (Acknowledgment Number) είναι ο επόμενος αναμενόμενος από τον προορισμό αύξων αριθμός (byte). Το TCP χρησιμοποιεί Χρονόμετρο Αναμετάδοσης (Retransmission Timer). Οι αναμεταδόσεις των segments προκαλούνται από λήξεις χρόνου ή πολλαπλές ACK Ο πομπός στέλνει συχνά πολλά segment το ένα πίσω απ το άλλο Αν χαθεί κάποιο segment, θα υπάρχουν ενδεχομένως πολλές ίδιες ACK, εφόσον ο προορισμός στέλνει ACK μόνο για segment που έχουν μπει σωστά σε σειρά. Στην περίπτωση αυτή ο πομπός που παραλαμβάνει πολλαπλές ACK δεν περιμένει τη λήξη του timer αλλά θεωρεί το segment χαμένο και κάνει αναμετάδοση Αυτό λέγεται Ταχεία Αναμετάδοση (Fast Retransmit) και χρησιμοποιείται σε περίπτωση λήψης πολλαπλών ACK. O δέκτης TCP συνήθως καθυστερεί τη μετάδοση μιας ACK (για περίπου 200ms) Αυτό γίνεται για να μπορέσει να στείλει σωρευτική (cumulative) ACK σε περίπτωση που ενδιάμεσα έρθει και επόμενο ή επόμενα segment Οι ACK δεν καθυστερούνται όταν τα πακέτα λαμβάνονται εκτός σειράς. σελ 23

Χαρακτηριστικά παραδείγματα λειτουργίας του TCP Χαμένο ACK Συμβαίνει Retransmission Timeout Αναμεταδίδεται το ίδιο segment Χαμένο ACK Μεταδίδεται το επόμενο segment. Ο προορισμός στέλνει νέα ACK, που στην ουσία εκλαμβάνεται σαν σωρευτική (cumulative) ACK. σελ 24

Χαρακτηριστικά παραδείγματα λειτουργίας του TCP Καθυστερημένο ACK Timeout Γίνεται αναμετάδοση του segment Λαμβάνονται διαδοχικά ACKs (άρα δεν συμβαίνει νέο timeout) Λαμβάνονται διαδοχικά ACK (χωρίς αυτή τη φορά να λήξει ο timer). Διαδοχική αποστολή segments To 2o segment δεν φτάνει στον προορισμό. Σαν αποτέλεσμα η πηγή λαμβάνει πολλαπλά ACK. Μετά το τρίτο επιπρόσθετο ACK και πριν τη λήξη του timer γίνεται Fast Retransmit του segment, εφόσον είναι ξεκάθαρο ότι το segment αυτό δεν έχει φτάσει στον προορισμό. σελ 25

Διάρκεια Retransmission TimeOut (RTO) Η διάρκεια του χρονομέτρου αναμετάδοσης (Retransmission Timeout, RTO) είναι σημαντικός παράγοντας στη καλή λειτουργία TCP Αν είναι μικρή έχουμε πρόωρο timeout και κατά συνέπεια άσκοπες αναμεταδόσεις Αν είναι μεγάλη έχουμε καθυστερήσεις σε περιπτώσεις χαμένων segment Η βασική απαίτηση είναι το RTO να είναι μεγαλύτερο από το Round Trip Time (RTT) To RTT ορίζεται σαν ο χρόνος από τη στιγμή που ένα segment μεταδίδεται από την πηγή ως τη στιγμή που το αντίστοιχο ACK λαμβάνεται από πηγή Η στιγμιαία τιμή του RTT για ένα segment ονομάζεται SampleRTT και όπως είναι αναμένεται είναι διαφορετικό για κάθε segment Η βασική απαίτηση είναι απλή αλλά το πρόβλημα είναι ότι η Στιγμιαία RTT (SampleRTT) μεταβάλλεται πολύ γρήγορα ανά segment (λόγω κατ αρχήν της λειτουργίας του επιπέδου δικτύου IP). Επειδή το SampleRTT μεταβάλλεται πολύ γρήγορα χρειάζεται μια εξομαλυμένη τιμή για το RTT σελ 26

Διάρκεια Retransmission TimeOut (RTO) Η εκτιμώμενη τιμή του RTT (ΕstimatedRTT) και δίνεται από τον τύπο EstimatedRTT n+1 = (1 α ) EstimatedRTT n + α SampleRTT όπου α=1/8=0.125 (προτεινόμενη τιμή, RFC6298) Πρόκειται για ένα σταθμισμένο κινούμενο μέσο όρο των SampleRTT Υπολογίζεται η DevRTΤ, δηλαδή ένα μέτρο της απόκλισης του SampleRTT από την εκτιμώμενη τιμή DevRTT n+1 = (1 β) DevRTT n + β ( SampleRTT EstimatedRTT n ) όπου β=1/4=0.250 (προτεινόμενη τιμή, RFC6298) Το RTO που είναι και το ζητούμενο υπολογίζεται ως εξής: RTO n+1 = EstimatedRTT n+1 + 4 DevRTT n+1 Αρχικές Συνθήκες RTO 0 = 1 sec (προτεινόμενη τιμή, RFC6298) Estimated RTT 1 = SampleRTT DevRTT 1 = SampleRTT / 2 RTO 1 = EstimatedRTT 1 + 4 DevRTT 1 σελ 27

Estimated RTT σε αντιστοιχία με την Sample RTT Η εκτιμώμενη τιμή του RTT (ΕstimatedRTT) είναι ένας σταθμισμένος κινούμενος μέσος όρος των Στιγμιαίων RTT (SampleRTT) σελ 28

Διάρκεια Retransmission TimeOut (RTO) Υπολογίστηκε η τιμή του RTO για την ομαλή λειτουργία του πρωτοκόλλου TCP, όταν απλώς υπάρχουν καθυστερήσεις. Στην περίπτωση αναμεταδόσεων λόγω χαμένων segment, στην πηγή δεν μπορεί να είναι γνωστό σε πιο segment (στο αρχικό ή στην αναμετάδοση του) αντιστοιχεί η ACK. Στις περιπτώσεις αυτές εφαρμόζεται ο αλγόριθμος του Karn: Δεν ενημερώνεται η Estimated RTT για segment που αναμεταδόθηκαν, δηλαδή δεν λαμβάνεται υπόψη το αντίστοιχο samplertt. Οι μετρήσεις για το EstimatedRTT ξεκινούν μετά τη λήψη ACK που αφορά segment που επιβεβαιώνεται κανονικά (χωρίς αναμετάδοση/timeout) Όταν συμβεί timeout, η τιμή του RTO διπλασιάζεται (εκθετική οπισθοχώρηση) παραμένοντας μικρότερη από 64 second σύμφωνα με τον τύπο: RTO n+1 = min (2 RTOn, 64) seconds σελ 29

Έλεγχος Ροής (Flow Control) στο TCP Ο έλεγχος ροής αναφέρεται στον έλεγχο που εκτελείται από την πηγή, έτσι ώστε να μην στείλει τα δεδομένα υπερβολικά γρήγορα, σε σημείο που να προκαλέσει πρόβλημα υπερχείλισης (overflow) στον προορισμό (receiver). Στον προορισμό (receiver) ορίζουμε τις παρακάτω μεταβλητές: RcvBuffer: το μέγεθος του Receive Buffer (bytes) που έχει δεσμεύσει η πλευρά του προορισμού για μια TCP σύνδεση, έτσι ώστε να αποθηκεύονται προσωρινά εκεί τα δεδομένα, ώσπου να τα διαβάσει η Διαδικασία Εφαρμογής (Application Process). rwnd: το μέγεθος του Receive Window (bytes) που απομένει για να χρησιμοποιήσει η πλευρά του προορισμού για να αποθηκεύσει προσωρινά δεδομένα. LastByteRead: ο αριθμός του τελευταίου byte δεδομένων που διαβάστηκε από την εφαρμογή στην πλευρά του προορισμού. LastByteRcvd: ο αριθμός του τελευταίου byte δεδομένων που έφτασε επιτυχώς από το δίκτυο στην πλευρά του προορισμού (LastByteRcvd LastByteRead). Receive Window (rwnd) rwnd = RcvBuffer [LastByteRcvd LastByteRead] σελ 30

Έλεγχος Ροής (Flow Control) στο TCP Στην ουσία ο μηχανισμός ελέγχου ροής του TCP είναι Ολισθαίνον Παράθυρο (Sliding Window). Για τον έλεγχο της ροής ο προορισμός ενημερώνει την πηγή χρησιμοποιώντας δύο χρήσιμα για την περίπτωση πεδία του segment: ACKNo, αριθμός επόμενου byte που αναμένεται WINSIZE, τρέχον μέγεθος του Receive Window (rwnd) ή Flow Window (fwnd) Με τη γνώση αυτή η πηγή μπορεί να αποστείλει στον προορισμό τα byte Από ACKNo ως ACKNo+WINSIZE-1 Η πηγή απαγορεύεται να στείλει σε καμία περίπτωση περισσότερα από WINSIZE bytes χωρίς να λάβει για αυτά ACK Αν μια πηγή, όταν μαθαίνει το WINSIZE, έχει ήδη στείλει Ν byte χωρίς να λάβει για αυτά ACK, τότε μπορεί ακόμα να στείλει (WINSIZE N) bytes σελ 31

Σχέση μεταξύ Ελέγχου Ροής, Συμφόρησης και Λαθών Ο μηχανισμός ελέγχου του επιπέδου μεταφοράς πρέπει να μπορεί να αντιμετωπίσει διάφορα είδη προβλημάτων: Η υπηρεσία δικτύου είναι αναξιόπιστη εφόσον δεν παρέχει Έλεγχο Λαθών (Error Control). Η χωρητικότητα του προορισμού (receiver) είναι ανεπαρκής για το προσφερόμενο φορτίο (Flow Control Έλεγχος Ροής) Η χωρητικότητα του δικτύου είναι ανεπαρκής για το προσφερόμενο φορτίο (Έλεγχος Συμφόρησης Congestion Control) Η λύση στα προβλήματα αυτά δίνεται με τον παρακάτω τρόπο: Ο Έλεγχος Λαθών υλοποιείται από αλγόριθμους που επιλύουν την απώλεια πακέτων. Ο Έλεγχος Ροής υλοποιείται από αλγόριθμους που προλαμβάνουν την αποστολή πληροφορίας από την πηγή με μεγαλύτερο ρυθμό από αυτόν που μπορεί να παραληφθεί από τον προορισμό Ο Έλεγχος Συμφόρησης υλοποιείται από αλγόριθμους που προλαμβάνουν και αντιμετωπίζουν την υπερφόρτωση του δικτύου Το TCP υλοποιεί συνδυασμένα τους τρεις διακριτούς ελέγχους. σελ 32

Συμφόρηση (Congestion) Η Συμφόρηση (Congestion) είναι ένα από τα σημαντικότερα θέματα που αντιμετωπίζουν τα σύγχρονα δίκτυα. Οφείλεται στο ότι οι δικτυακοί πόροι είναι πεπερασμένοι και το προσφερόμενο φορτίο είναι υψηλό και εκρηκτικό Οι δρομολογητές μπορούν να εξυπηρετήσουν ένα μέγιστο αριθμό πακέτων στη μονάδα του χρόνου Τα πακέτα επιπλέον του αριθμού αυτού θα πρέπει να αποθηκευτούν προσωρινά Άρα, θα υπάρξουν καθυστερήσεις Οι δρομολογητές μπορούν να αποθηκεύσουν προσωρινά ένα μέγιστο αριθμό πακέτων προς εξυπηρέτηση Τα πακέτα επιπλέον αυτών αναγκαστικά θα πρέπει να απορριφτούν Άρα, δικτυακοί πόροι ήδη σπαταλήθηκαν και τελικά εφόσον πακέτα απορριφτούν θα χρειαστεί αναμετάδοση (άρα επιπλέον σπατάλη πόρων και καθυστέρηση). Η συμφόρηση οδηγεί σε μειωμένη δικτυακή επίδοση λόγω των καθυστερήσεων και της σπατάλης πόρων που συνεπάγεται. Για να καταπολεμηθεί η συμφόρηση υπάρχουν γενικά δύο μέθοδοι: Έλεγχος Συμφόρησης από Άκρη-σε-άκρη (End-to-end Congestion Control) Δικτυακά Υποβοηθούμενος Έλεγχος Συμφόρησης (Network-Assisted Congestion Control) σελ 33

Έλεγχος Συμφόρησης στο TCP Το TCP υλοποιεί ένα μηχανισμό έλεγχου συμφόρησης από-άκρη-σε-άκρη. Αυτό είναι αναμενόμενο διότι: ένας μηχανισμός ελέγχου συμφόρησης είναι απαραίτητος στο Διαδίκτυο το IP δεν διαθέτει τέτοιο μηχανισμό και βασίζεται σε λογική best effort το TCP λειτουργεί από-άκρη-σε-άκρη Ο μηχανισμός ελέγχου συμφόρησης του TCP Υλοποιείται στην πηγή Βασίζεται στην ανάδραση και στο μέγεθος ενός παραθύρου συμφόρησης μέσα στα πλαίσια του οποίου επιτρέπεται η αποστολή segment χωρίς τη λήψη επιβεβαίωσης (ACK). Οι πηγές προσπαθούν να ανακαλύψουν τη διαθέσιμη χωρητικότητα του δικτύου Το TCP αποστέλλει segments και αντιδρά στα γεγονότα που παρατηρούνται σελ 34

Έλεγχος Συμφόρησης στο TCP Τα χαμένα segment οφείλονται συνήθως σε συμφόρηση στο διαδίκτυο Οι δρομολογητές (λειτουργώντας στο επίπεδο δικτύου) απορρίπτουν IP πακέτα διότι δεν μπορούν να ανταπεξέλθουν στον τηλεπικοινωνιακό φόρτο Τα χαμένα segment οδηγούν σε αναμεταδόσεις που μειώνουν την επίδοση του δικτύου εφόσον αυξάνουν την προσφορά φορτίου και την καθυστέρηση. Το TCP ελέγχει την παροχή φορτίου από την πηγή τροποποιώντας δυναμικά τον ρυθμό αποστολής segments σύμφωνα με τον στρατηγική Προσθετική Αύξηση - Πολλαπλασιαστική Μείωση (AIMD, Additive Increase - Multiplicative Decrease) Για το ξεκίνημα της ροής, το TCP χρησιμοποιεί ένα μηχανισμό εκκίνησης που αποκαλείται Αργή Αρχή (Slow Start). Στη συνέχεια εφαρμόζει ένα μηχανισμό διατήρησης που ονομάζεται Αποφυγή Συμφόρησης (Congestion Avoidance). σελ 35

Μηχανισμός Ελέγχου Συμφόρησης στο TCP Η πηγή χειρίζεται τις μεταβλητές: Παράθυρο Ροής (Receive Window (rwnd) ή Flow Window (fwnd) ή WINSIZE) Ορίζει το μέγιστο αριθμό bytes που μπορεί να στείλει η πηγή χωρίς να περιμένει ACK από τον προορισμό, έτσι ώστε να μην προκληθεί Overflow στον προορισμό. Το επικοινωνεί ο προορισμός (receiver) δυναμικά. Παράθυρο Συμφόρησης (Congestion Window (cwnd)) Ορίζει το μέγιστο αριθμό bytes που μπορεί να στείλει η πηγή χωρίς να προκληθεί συμφόρηση στο δίκτυο Τροποποιείται δυναμικά με βάση την ανάδραση από το δίκτυο Κατώφλι Αργής Αρχής (Slow-start threshold Value (ssthresh)) Πρόκειται για το κατώφλι που σταματάει η Διαδικασία Αρχή Αρχής και αρχίζει η Διαδικασία Αποφυγής Συμφόρησης. Αρχική τιμή ssthresh= fwnd Ο αποστολέας TCP ρυθμίζει τον ρυθμό αποστολής τροποποιώντας το παράθυρο αποστολής σύμφωνα με το κανόνα: Sliding Window = min {cwnd, fwnd} Άρα, το πλήθος byte που μπορούν να αποσταλούν χωρίς να ληφθεί επιβεβαίωση είναι το μικρότερο από τα δύο παράθυρα Το παράθυρο ροής (flow ή receive window) Το παράθυρο συμφόρησης (congestion window) Άρα, ο ρυθμός μετάδοσης από μια πηγή καθορίζεται από τον περισσότερο αργό κρίκο στην αλυσίδα μετάδοσης (είτε το δίκτυο είτε ο προορισμός) σελ 36

Μηχανισμός Ελέγχου Συμφόρησης στο TCP Για να μεταδοθούν τα δεδομένα όσο το δυνατόν γρηγορότερα, το παράθυρο συμφόρησης πρέπει δυνητικά να είναι όσο το δυνατό μεγαλύτερο, εφόσον φυσικά δεν παρατηρείται συμφόρηση! Η συμφόρηση εκτιμάται από την πηγή βάσει της ανάδρασης που λαμβάνει από το δίκτυο Η διαδικασία είναι δυναμική και επιτρέπει: Την αύξηση του παράθυρου συμφόρησης με κατάλληλο ρυθμό μέχρι να παρατηρηθούν απώλειες (συμφόρηση) Την μείωση του παράθυρου συμφόρησης εφόσον υπάρξουν απώλειες και τη σταδιακή ανάκαμψη (αύξηση) του πάλι. Ο έλεγχος συμφόρησης στο TCP λειτουργεί με τρεις διαδικασίες: Διαδικασία Αργής Αρχής (slow start) (cwnd < ssthresh) Διαδικασία Αποφυγής Συμφόρησης (congestion avoidance) (cwnd ssthresh) Διαδικασία (Ταχείας) Ανάκαμψης (fast recovery) σελ 37

Διαδικασία Αργής Αρχής (Slow Start) Αρχική τιμή: cwnd = 1 Η μονάδα μέτρησης είναι το μέγεθος segment, άρα συνεπάγεται αύξηση κατά ένα MSS (Maximum Segment Size) Κάθε φορά που λαμβάνεται ACK στην πηγή, το παράθυρο αυξάνει κατά 1: cwnd n+1 = cwnd n + 1 Ας σημειωθεί ότι εάν το ACK επαληθεύει δύο segment, το cwnd πάλι αυξάνει κατά 1 Πρακτικά η διαδικασία έχει σαν αποτέλεσμα το διπλασιασμό του ρυθμού μετάδοσης κάθε RTT. Η διαδικασία είναι αρκετά γρήγορη, απλώς δεν επιτρέπει να αποσταλούν δεδομένα περισσότερα από το μέγεθος του παράθυρου. Το TCP αρχικά δεν διέθετε μηχανισμό ελέγχου της συμφόρησης Αυτό είχε σαν αποτέλεσμα μεγάλα προβλήματα συμφόρησης (Κατάρρευση διαδικτύου τον Οκτώβριο του 1986) που λύθηκαν με την εισαγωγή του έλεγχου συμφόρησης. σελ 38

Διακοπή της διαδικασίας Αργής Αρχής Η διαδικασία Slow start διακόπτεται στις παρακάτω περιπτώσεις: Εφόσον παρατηρηθεί από την πηγή συμφόρηση στο δίκτυο, δηλαδή πρακτικά όταν συμβεί timeout η πηγή θέτει την τιμή του cwnd=1 και ξεκινά τη διαδικασία slow start από την αρχή η πηγή θέτει επίσης την τιμή της μεταβλητής ssthresh (slow start threshold) στην τιμή ssthresh =cwnd/2, όπου το cwnd ήταν το τρέχων όταν σημειώθηκε συμφόρηση όταν το cwnd φτάσει στην τιμή ssthresh και περνάμε στη διαδικασία αποφυγής συμφόρησης (congestion avoidance mode). Αν ληφθούν 3 ίδια ACKs, πράγμα που σημαίνει ότι υπάρχει χαμένο segment, η διαδικασία slow start τελειώνει και περνάμε στη διαδικασία fast retransmit (fast retransmit mode) σελ 39

Διαδικασίας Αποφυγής Συμφόρησης (Congestion Avoidance) Η διαδικασία αποφυγής συμφόρησης αρχίζει όταν το cwnd φτάσει το Κατώφλι Αργής Αρχής (ssthresh) Εάν cwnd >= ssthresh τότε κάθε φορά που λαμβάνεται ένα ACK, η αύξηση του cwnd γίνεται ως εξής: cwnd = cwnd + 1/cwnd Άρα το cwnd αυξάνει κατά 1 μόνο εάν επαληθευθούν όλα τα cwnd segment Oι επιτυχημένες μεταδόσεις προκαλούν γραμμική αύξηση του cwnd ανά RTT σελ 40

Προβλήματα επίδοσης της Slow Start Η αργή αρχή υποθέτει ότι οι απώλειες οφείλονται σε συμφόρηση του δικτύου υπάρχουν περιπτώσεις, π.χ. ασύρματα δίκτυα, όπου οι απώλειες οφείλονται στην κακή ποιότητα της ζεύξης δεδομένων σε τέτοιες περιπτώσεις η επίδοση του TCP είναι κακή Η αργή αρχή έχει κακή επίδοση όταν οι συνδέσεις έχουν μικρή διάρκεια Χαρακτηριστικά αυτό συμβαίνει σε μικρές μεταφορές, π.χ. σελίδες web σελ 41

Ταχεία Αναμετάδοση (Fast Retransmit) Ταχεία αναμετάδοση (Fast Retransmit) Μερικές φορές η αναμονή μέχρι να λήξει το χρονόμετρο μπορεί να είναι σχετικά μεγάλη Η πιθανή απώλεια μπορεί να ανιχνευθεί με τη λήψη ταυτόσημων ACK Στην περίπτωση αυτή έχουμε πρόωρη (πριν τη λήξη του χρονομέτρου) αποστολή του πιθανολογούμενου χαμένου segmet Εάν υπάρξουν τρία ή περισσότερα ταυτόσημα ACK στη σειρά, ο αποστολέας TCP πιστεύει ότι το segment χάθηκε Τότε, το TCP προχωρά σε αναμετάδοση του segment που νομίζει ότι χάθηκε, χωρίς να περιμένει την εκπνοή χρόνου και επανέρχεται στην αργή αρχή ssthresh = cwnd/2 cwnd = 1 Η ταχεία αναμετάδοση είναι απίθανο να ενεργοποιηθεί εάν δεν υπάρχουν πολλά προς μετάδοση πακέτα και άρα δεν είναι ιδιαίτερα χρήσιμη για μικρές μεταφορές, π.χ. σελίδες web σελ 42

Ταχεία Ανάκαμψη (Fast Recovery) Ταχεία ανάκαμψη (Fast Recovery) Επιτάχυνση της διαδικασίας ανάκαμψης με αποφυγή της αργής αρχής μετά από την ταχεία αναμετάδοση Η λήψη ταυτόσημων ACK, εκτός από πιθανή απώλεια, δείχνει επιπλέον ότι τα δεδομένα προωθούνται στον προορισμό Δεν υπάρχει λόγος να αρχίσει η διαδικασία διερεύνησης από την αρχή Μετά τρία ίδια ACK Αναμετάδοση του segment που θεωρείται χαμένο ssthresh = cwnd/2 cwnd = ssthresh+3 Αύξηση του cwnd κατά 1 για κάθε επιπλέον ταυτόσημο ACK Η αποστολή νέων segments είναι δυνατή εάν το επιτρέπει η νέα τιμή του cwnd Όταν φτάσει ACK που δεν είναι ίδια και άρα αφορά νέα segment cwnd = ssthresh Άρα μπαίνουμε σε διαδικασία αποφυγής συμφόρησης Η ταχεία ανάκαμψη βελτιώνει την επίδοση μόνο όταν έχουμε μία απώλεια πακέτου μέσα στο χρόνο RTT Εάν υπάρξει timeout, τότε ακολουθεί αναμετάδοση και αργή αρχή σελ 43

TCP versions TCP Tahoe (1988, FreeBSD 4.3 Tahoe) Αργή Αρχή (Slow Start) Αποφυγή Συμφόρησης (Congestion Avoidance) Ταχεία Αναμετάδοση (Fast Retransmit) TCP Reno (1990, FreeBSD 4.3 Reno) Ταχεία Ανάκαμψη (Fast Recovery) σελ 44

User Datagram Protocol (UDP) σελ 45

Γενικά χαρακτηριστικά To UDP είναι ένα πρωτόκολλο χωρίς σύνδεση (connectionless) κάθε segment UDP αντιμετωπίζεται ανεξάρτητα από τα άλλα δεν ανταλλάσσονται επιβεβαιώσεις μεταξύ της πηγής και του προορισμού Τα segment του UDP μπορεί: να χαθούν να παραδοθούν εκτός σειράς στο ανώτερο στρώμα Άλλα χαρακτηριστικά Δεν εκτελείται εγκατάσταση σύνδεσης Αποφεύγεται η σχετική καθυστέρηση Είναι εξαιρετικά απλό πρωτόκολλο Δεν διατηρείται κατάσταση σύνδεσης στην πηγή ή στον προορισμό Έχει μικρή επικεφαλίδα Εξοικονομείται εύρος ζώνης Δεν εκτελείται έλεγχος συμφόρησης το UDP μπορεί να στέλνει όσο γρήγορα μπορεί ο πομπός σελ 46

Γενικά χαρακτηριστικά Υποστηρίζονται μηνύματα μέχρι και 64KByte Παρέχει πολυπλεξία/αποπολυπλεξία στο IP Χρησιμοποιείται σε εφαρμογές streaming multimedia που έχουν: ανοχή σε απώλειες ευαισθησία στον ρυθμό μετάδοσης Επίσης χρησιμοποιείται: DNS (Domain Name System) SNMP (Simple Network Management Protocol) RIP (Routing Information Protocol) Αν χρειάζεται αξιόπιστη μεταφορά με χρήση του UDP, απαιτούνται μηχανισμοί αξιοπιστίας στο στρώμα εφαρμογής σελ 47

Μηνύματα UDP Source port & Destination Port: προσδιορίζουν τις διαδικασίες αποστολής και λήψης. Η μέγιστη τιμή αριθμού θύρας είναι 216-1= 65,535 Length: Το μήκος του segment UDP είναι τουλάχιστον 8 byte (π.χ., άδειο πεδίο Data) και το πολύ 65,535 byte. Checksum: Το πεδίο ελέγχου περιλαμβάνει την επικεφαλίδα του UDP και μερικά πεδία της επικεφαλίδας IP σελ 48

Ευχαριστώ! σελ 49