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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Transmission Control Protocol. Transmission Control Protocol

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ειδικά Θέματα Προγραμματισμού

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

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

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

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

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

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

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

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap

ΚΕΦΑΛΑΙΟ 11: Διαδικασία Μετάδοσης Δεδομένων Εισαγωγή

ΑΣΚΉΣΕΙΣ ΔΙΔΆΣΚΟΝΤΕΣ: ΔΡ. ΕΥΓΕΝΊΑ ΑΔΑΜΟΠΟΎΛΟΥ, ΔΡ. ΚΏΣΤΑΣ ΔΕΜΈΣΤΙΧΑΣ. ΔΠΜΣ «Τεχνο- Οικονομικά Συστήματα» Τεχνολογία Πληροφορίας και Τηλεπικοινωνιών

3/40. (acknowledged connectionless), (acknowledged connection oriented) 4/40

Δίκτυα Υπολογιστών ΙΙ (Ασκήσεις Πράξης)

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

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

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

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

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

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

Network Address Translation (NAT)

Άσκηση 2 η Πρωτόκολλο επικοινωνίας TCP/IP

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

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

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

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

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

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

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

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

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

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

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

Transcript:

ΔΊΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΏΝ ΔΊΚΤΥΑ ΥΠΟΛΟΓΙΣΤΏΝ ΚΑΙ ΣΤΡΏΜΑ ΜΕΤΑΦΟΡΆΣ ΔΙΔΆΣΚΟΝΤΕΣ: ΔΡ. ΕΥΓΕΝΊΑ ΑΔΑΜΟΠΟΎΛΟΥ, ΔΡ. ΚΏΣΤΑΣ ΔΕΜΈΣΤΙΧΑΣ ΔΠΜΣ «Τεχνο- Οικονομικά Συστήματα» Τεχνολογία Πληροφορίας και Τηλεπικοινωνιών

Ιστοσελίδα Μαθήματος 2 http://people.cn.ntua.gr/jenny/index.php/courses e-mail επικοινωνίας: eadam@cn.ntua.gr cdemest@cn.ntua.gr

Βιβλιογραφία 3 J. Kurose and K. Ross, Computer Networking A top down approach, Pearson, 6 th edition, 2013

Υπηρεσίες και πρωτόκολλα του 4 στρώματος μεταφοράς Οι υπηρεσίες του στρώματος μεταφοράς προσφέρουν λογική επικοινωνία μεταξύ διεργασιών που τρέχουν σε διαφορετικούς σταθμούς Τα πρωτόκολλα του στρώματος μεταφοράς τρέχουν στους τερματικούς σταθμούς (όχι στους ενδιάμεσους κόμβους) πλευρά του αποστολέα: χωρίζει τα μηνύματα της εφαρμογής σε τεμάχια (segments) και τα περνά στο στρώμα δικτύου για περαιτέρω ενθυλάκωση πλευρά του παραλήπτη: επανασυνδέει («συναρμολογεί») τα τεμάχια σε μηνύματα, τα οποία και περνά στο στρώμα εφαρμογής Οι εφαρμογές έχουν δύο επιλογές για τη χρήση πρωτοκόλλου στρώματος μεταφοράς TCP UDP application transport network data link physical application transport network data link physical

Στρώμα μεταφοράς vs. Στρώμα δικτύου 5 Στρώμα μεταφοράς λογική επικοινωνία μεταξύ διεργασιών (που τρέχουν σε διαφορετικούς τερματικούς σταθμούς) Στρώμα δικτύου λογική επικοινωνία μεταξύ τερματικών σταθμών

Πρωτόκολλα στρώματος μεταφοράς 6 TCP: Αξιόπιστη μεταφορά, με σωστή σειρά (διατήρηση σειράς) έλεγχος συμφόρησης έλεγχος ροής δεδομένων εγκατάσταση σύνδεσης UDP: Μη αξιόπιστη μεταφορά, χωρίς εγγύηση παράδοσης δεδομένων με τη σωστή σειρά best effort Μη διαθέσιμες υπηρεσίες εγγύηση (μέγιστης) καθυστέρησης εγγύηση (ελάχιστου) ρυθμού μετάδοσης application transport network data link physical network data link physical network data link physical network data link physical network data link physical network data link physical network data link physical network data link physical application transport network data link physical

Multiplexing/Demultiplexing 7 multiplexing στον αποστολέα: διαχείριση δεδομένων από πολλαπλά sockets, προσθήκη επικεφαλίδας στρώματος μεταφοράς (θα χρησιμεύσει στο demultiplexing) demultiplexing στον παραλήπτη: χρήση της επικεφαλίδας του στρώματος μεταφοράς για την παράδοση των τεμαχίων στο σωστό socket application application P3 transport network link P1 transport network link physical P2 application P4 transport network link socket process physical physical

Multiplexing/Demultiplexing Θύρες 8 Οι αριθμοί θύρας (port numbers) χρησιμεύουν στη διαδικασία multiplexing/demultiplexing Οι αριθμοί θύρας έχουν μήκος 16 bit Ο πελάτης πρέπει να γνωρίζει τη θύρα του εξυπηρετητή προκειμένου να επικοινωνήσει Πασίγνωστες θύρες (0-1023): όλοι συμφωνούν ποιες υπηρεσίες τρέχουν σε αυτές τις θύρες π.χ., FTP:21, SMTP:25, DNS:53, HTTP:80 Εφήμερες θύρες (1024-65535): δεσμεύονται και αποδεσμεύονται δυναμικά από το Λειτουργικό Σύστημα του σταθμού

Demultiplexing 9 Πώς λειτουργεί το demultiplexing (απόπλεξη, αποπολυπλεξία)? Ο σταθμός λαμβάνει IP πακέτα (packets, datagrams) Κάθε πακέτο έχει IP διεύθυνση προέλευσης και προορισμού Κάθε πακέτο περιέχει ένα τεμάχιο στρώματος μεταφοράς Κάθε τεμάχιο έχει αριθμό θύρας (port number) προέλευσης και προορισμού Για την απόπλεξη, κάθε σταθμός χρησιμοποιεί αυτές τις διευθύνσεις IP και τους αριθμούς θύρας για να τοποθετήσει το τεμάχιο στο σωστό socket 32 bits source port # dest port # other header fields application data (payload) Γενική Δομή TCP/UDP segment

Connectionless Demultiplexing 10 Όταν ο σταθμός λάβει ένα UDP τεμάχιο Ελέγχει τον αριθμό θύρας προορισμού στο τεμάχιο Κατευθύνει και τοποθετεί το τεμάχιο στο τοπικό socket που αντιστοιχεί σε αυτόν τον αριθμό θύρας Ένα UDP socket προσδιορίζεται από το ζεύγος IP διεύθυνση προορισμού αριθμός θύρας προορισμού Για την απόπλεξη, ο παραλήπτης χρησιμοποιεί μόνο τα 2 παραπάνω στοιχεία για να κατευθύνει το τεμάχιο UDP στο σωστό socket Κατά συνέπεια: Τεμάχια προς τον ίδιο σταθμό και με τον ίδιο αριθμό θύρας προορισμού αλλά διαφορετικές IP διευθύνσεις ή/και θύρες προέλευσης θα κατευθυνθούν στο ίδιο socket μόλις παραληφθούν Με αυτόν τον τρόπο γίνεται η απόπλεξηστην περίπτωση του UDP

Connectionless Demultiplexing 11 DatagramSocket mysocket2 = new DatagramSocket (9157); application transport link P3 network physical DatagramSocket serversocket = new DatagramSocket (6428); application transport network link P1 physical DatagramSocket mysocket1 = new DatagramSocket (5775); application transport network link P4 physical source port: 6428 dest port: 9157 source port:? dest port:? source port: 9157 dest port: 6428 source port:? dest port:?

Connection-oriented demultiplexing 12 Ένα TCP socket ταυτοποιείται μοναδικά από την ακόλουθη τετράδα IP διεύθυνση προέλευσης αριθμός θύρας προέλευσης IP διεύθυνση προορισμού αριθμός θύρας προορισμού Για την απόπλεξη, ο παραλήπτης χρησιμοποιεί και τα 4 παραπάνω στοιχεία για να κατευθύνει το TCP τεμάχιο στο σωστό socket Ένας εξυπηρετητής μπορεί έτσι να υποστηρίξει πολλά TCP sockets ταυτόχρονα, ακόμα και αν αυτά έχουν ίδιο τοπικό αριθμό θύρας (αφού η παραπάνω τετράδα διακρίνει τα TCP sockets) Π.χ. ένας Web server έχει πολλά διαφορετικά sockets ταυτόχρονα Με αυτόν τον τρόπο γίνεται η απόπλεξη στην περίπτωση του TCP

Connection-oriented demultiplexing 13 application P3 transport network link physical application P4 P5 transport network link physical P6 server: IP address B application P2 P3 transport network link physical host: IP address A source IP,port: B,80 dest IP,port: A,9157 source IP,port: A,9157 dest IP, port: B,80 source IP,port: C,5775 dest IP,port: B,80 host: IP address C source IP,port: C,9157 dest IP,port: B,80 τρία τεμάχια που και τα τρία προορίζονται προς <IP address: B, dest port: 80> αποπλέκονται σε διαφορετικά sockets

UDP User Datagram Protocol 14 Απλό πρωτόκολλο στρώματος μεταφοράς στο Διαδίκτυο Best-effort υπηρεσία, διότι τα UDP τεμάχια μπορεί να χαθούν παραδοθούν εκτός σειράς στην εφαρμογή Connectionless = χωρίς εγκατάσταση σύνδεσης καμία χειραψία μεταξύ αποστολέα και παραλήπτη χειριζόμαστε κάθε UDP τεμάχιο ανεξάρτητα από τα υπόλοιπα Χρήση του UDP σε εφαρμογές multimedia streaming DNS SNMP Προσθήκη αξιοπιστίας μόνο στο στρώμα εφαρμογής

UDP Επικεφαλίδα 15 source port # dest port # length 32 bits application data (payload) checksum Δομή UDP segment Το μήκος τεμαχίου UDP είναι τουλάχιστον 8 byte και το πολύ 65,535 byte Γιατί? μέγεθος σε bytes του τεμαχίου UDP συμπεριλαμβανομένης της επικεφαλίδας Γιατί υπάρχει το UDP? μεταφορά χωρίς εγκατάσταση σύνδεσης (η οποία μπορεί να προσθέσει καθυστέρηση) απλότητα (χωρίς διατήρηση κατάστασης στον αποστολέα και στον παραλήπτη) μικρό μέγεθος επικεφαλίδας απουσία ελέγχου συμφόρησης (το UDP μπορεί να επιτύχει μεγαλύτερες ταχύτητες)

UDP Checksum 16 Στόχος της χρήσης του πεδίου checksum (άθροισμα ελέγχου) είναι ο εντοπισμός ύπαρξης λαθών (αλλοίωση bits) σε ένα μεταδιδόμενο τεμάχιο Πλευρά του αποστολέα Χωρισμός των περιεχομένων του τεμαχίου (μαζί με τα πεδία της επικεφαλίδας) σε μια σειρά λέξεων μήκους 16 bits Υπολογισμός checksum: Πρόσθεση των λέξεων αυτών και εύρεση του συμπληρώματος ως προς 1 του αθροίσματος n wrap around σε περίπτωση κρατούμενου Τοποθέτηση της τιμής του checksum στο πεδίο checksum της επικεφαλίδας UDP Πλευρά του παραλήπτη Χωρισμός των περιεχομένων του τεμαχίου που παρελήφθη (μαζί με τα πεδία της επικεφαλίδας) σε μια σειρά λέξεων μήκους 16 bits Πρόσθεση όλων αυτών των λέξεων και έλεγχος αν το αποτέλεσμα ταυτίζεται με το 0xffff (όλα τα bit να είναι 1)

UDP Checksum 17 Παράδειγμα: πρόσθεση δύο ακεραίων αριθμών 16-bit 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 wraparound sum checksum 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 Σημ.: Όταν προστίθενται οι αριθμοί κατά τον υπολογισμό του checksum, το κρατούμενο προστίθεται στο αποτέλεσμα

Αξιόπιστη μεταφορά δεδομένων 18 Η αξιοπιστία είναι ένα από τα πιο σημαντικά ζητήματα στη δικτύωση Τα χαρακτηριστικά του μη αξιόπιστου καναλιού είναι εκείνα που καθορίζουν και την πολυπλοκότητα του αξιόπιστου πρωτοκόλλου μεταφοράς Application layer Transport layer Network layer Sending process Reliable channel Receiver process a. Provided service

Αξιόπιστη μεταφορά δεδομένων 19 Ακρωνύμιο rdt = reliable data transfer (αξιόπιστη μεταφορά δεδομένων) rdt_send(): Καλείται από την εφαρμογή, περνώντας τα προς αποστολή δεδομένα deliver_data(): Καλείται από τη διαδικασία rdt, για την παράδοση δεδομένων στην εφαρμογή send side receive side udt_send(): Καλείται από τη διαδικασία rdt, για την αποστολή των δεδομένων μέσα από το μη αξιόπιστο κανάλι rdt_rcv(): Καλείται όταν καταφθάνει ένα τεμάχιο στην πλευρά του παραλήπτη

TCP Transmission Control Protocol 20 Είναι πρωτόκολλο μεταφοράς με σύνδεση, που προσφέρει αξιόπιστη μετάδοση συρμού byte από άκρο εις άκρο πάνω από μη αξιόπιστο δίκτυο Συρµός byte TCP TCP Δίκτυο IP

TCP Γενικά 21 Μετάδοση σημείου προς σημείο ένας πομπός (αποστολέας), ένας δέκτης (παραλήπτης) Αξιόπιστη μετάδοση (παράδοση με τη σειρά) συρμού byte το μήνυμα εφαρμογής μπορεί να έχει αυθαίρετο μήκος Συνεχής παροχή ο έλεγχος συμφόρησης και ροής στο TCP καθορίζουν το μέγεθος του παραθύρου Buffers εκπομπής και λήψης υποδοχή Η εφαρµογή γράφει δεδοµένα Η εφαρµογή διαβάζει δεδοµένα υποδοχή θύρα TCP buffer εκποµπής TCP buffer λήψης θύρα τεµάχιο

TCP Γενικά 22 Αμφίδρομη μετάδοση Αμφίδρομη ροή δεδομένων στην ίδια σύνδεση MSS Maximum Segment Size (μέγιστος μήκος τεμαχίου) Υπηρεσία με σύνδεση Η λεγόμενη τριμερής χειραψία αρχικοποιεί την κατάσταση πομπού και δέκτη πριν την ανταλλαγή δεδομένων Έλεγχος ροής Ο πομπός δεν υπερχειλίζει τον δέκτη Έλεγχος και αποφυγή συμφόρησης Πολλά παραδείγματα χρησιμοποίησης FTP, HTTP, SMTP (e-mail),...

TCP Γενικά 23 Πριν από οποιανδήποτε μεταφορά δεδομένων, το TCP εγκαθιστά μια σύνδεση Η μία πλευρά αναμένει για σύνδεση (εξυπηρετητής server) Η άλλη πλευρά (πελάτης client) συνδέεται με τον server Η διαδικασία εγκατάστασης σύνδεσης είναι στην πραγματικότητα πιο πολύπλοκη Κάθε σύνδεση είναι αμφίδρομη, σημείου προς σημείο CLIENT SERVER αναµονή για αίτηση σύνδεσης Μεταφορά δεδοµένων

TCP Υπηρεσία συρμού byte 24 Host A TCP Data Το τεμάχιο στέλνεται όταν: 1. Είναι πλήρες (MSS byte) 2. Όχι πλήρες, αλλά λήγει ο χρόνος 3. Ωθείται από την εφαρμογή Host B TCP Data

TCP Υπηρεσία συρμού byte 25 Στα κατώτερα στρώματα, το TCP παραδίδει δεδομένα σε τμήματα, τα τεμάχια Στα ανώτερα στρώματα, το TCP παραδίδει δεδομένα ως ακολουθία από byte και δεν καθορίζει όρια μεταξύ των byte Συνεπώς, τα ανώτερα στρώματα δεν γνωρίζουν την αρχή και το τέλος των τεμαχίων Εφαρµογή 1. write 100 byte 2. write 20 byte Εφαρµογή 1. read 40 byte 2. read 40 byte 3. read 40 byte TCP byte για µετάδοση τεµάχια TCP ληφθέντα byte

TCP Maximum Segment Size 26 MSS (Maximum Segment Size Μέγιστο Μήκος Τεμαχίου) είναι ο μέγιστος αριθμός δεδομένων του στρώματος εφαρμογής που εμπεριέχονται στο τεμάχιο και όχι το μέγιστο μέγεθος του τεμαχίου Εξαρτάται από την υλοποίηση του TCP (καθοριζόμενη από το Λειτουργικό Σύστημα) και μπορεί να επιλεγεί Συνήθεις τιμές: 1500, 536, 512 byte Επιλέγεται το μέγιστο μέγεθος κατά τρόπο που να αποφεύγεται ο θρυμματισμός στο ΙΡ

TCP Δομή τεμαχίου 27 Επικεφαλίδα ΙΡ Επικεφαλίδα TCP Δεδομένα εφαρμογής 20 byte Μήκος επικ. 32 bit θύρα πηγής θύρα προορισµού αύξων αριθµός not used αριθµός επαλήθευσης U A P checksum R S F µέγεθος παραθύρου δείκτης επείγοντος επιλογές (µεταβλητό µήκος) δεδοµένα εφαρµογής (µεταβλητό µήκος) (65.535-20-20=65.495 byte) µέτρηση σε byte δεδοµένων

TCP Δομή τεμαχίου 28 ACK: έγκυρη ACK URG: επείγοντα δεδοµένα λέξεις 32 bit PSH: pushed data RST, SYN, FIN Έλεγχος λαθών Μήκος επικ. θύρα πηγής not used 32 bit αύξων αριθµός αριθµός επαλήθευσης U A P checksum R S F θύρα προορισµού µέγεθος παραθύρου δείκτης επείγοντος επιλογές (µεταβλητό µήκος) δεδοµένα εφαρµογής (µεταβλητό µήκος) (65.535-20-20=65.495 byte) αριθµός byte που µπορεί να δεχθεί ο δέκτης θέση του τελευταίου byte των urgent data

TCP Αύξοντες αριθμοί και αριθμοί επαλήθευσης 29 Οι αύξοντες αριθμοί (sequence numbers SEQ) και οι αριθμοί επαληθεύσεων (acknowledgment numbers ACK) έχουν μήκος 32 bit Η περιοχή τιμών τους είναι 0 Sequence number 2 32-1 4.3 GB Ο client και ο server επιλέγουν ο καθένας τους τον ISN με τυχαίο τρόπο κατά την εγκατάσταση της σύνδεσης Host A ISN (initial sequence number) Αύξων αριθµός = πρώτο byte TCP HDR TCP Data Αριθµός Ack = επόµενο αναµενόµενο byte TCP HDR TCP Data Host B

TCP Αύξοντες αριθμοί και αριθμοί επαλήθευσης 30 Το TCP χρησιμοποιεί παραλλαγή του λεγόμενου αλγορίθμου ολισθαίνοντος παραθύρου (sliding window) για τον έλεγχο ροής δεδομένων μεταξύ πομπού και δέκτη τόσο ο πομπός όσο και ο δέκτης διαθέτουν έναν buffer πεπερασμένου μεγέθους για να διατηρούν τα εξερχόμενα και τα εισερχόμενα τεμάχια της άλλης πλευράς κάθε τεμάχιο που στέλνεται από τον πομπό πρέπει να επαληθεύεται από το δέκτη n ο πομπός διατηρεί ένα χρονόμετρο για κάθε απεσταλμένο τεμάχιο και κάθε μη- επαληθευμένο τεμάχιο εντός του προκαθορισμένου χρόνου επαναμεταδίδεται ο πομπός δε χρειάζεται να περιμένει την επαλήθευση ενός τεμαχίου προτού στείλει το επόμενο n μπορεί να στείλει ένα ολόκληρο σύνολο (συμφωνημένου μεγέθους) τεμαχίων, το λεγόμενο «παράθυρο», προτού λάβει την επιβεβαίωση για το πρώτο τεμάχιο του παραθύρου έτσι, επιτυγχάνεται υψηλότερος ρυθμός μετάδοσης δεδομένων ο δέκτης ανακοινώνει ένα μέγεθος παραθύρου το οποίο υποδεικνύει στον πομπό πόσα δεδομένα μπορεί να λάβει ώστε να μη γεμίσει ο buffer του

TCP Αύξοντες αριθμοί και αριθμοί επαλήθευσης 31 Το TCP χρησιμοποιεί παραλλαγή του αλγορίθμου ολισθαίνοντος παραθύρου, στην οποία δε χρησιμοποιούνται αρνητικές επιβεβαιώσεις (NACK Negative Acknowledgment) αλλά μόνο συσσωρευτικές θετικές επιβεβαιωτικές (ACK) Παράδειγμα: Ο πομπός στέλνει δύο τεμάχια με 1...1500 (bytes δεδομένων) και 1501 3000, αλλά ο δέκτης λαμβάνει μόνο το δεύτερο Ο δέκτης δεν μπορεί να επαληθεύσει το δεύτερο τεμάχιο n Θα ειδοποιήσει τον πομπό ότι περιμένει να λάβει το πρώτο τεμάχιο

TCP Αύξοντες αριθμοί και αριθμοί επαλήθευσης 32 Παράδειγμα telnet Ο χρήστης πληκτρολογεί C Host A Host B Ο host επαληθεύει τη λήψη του C, Στέλνει πίσω ηχώ του C Ο host επαληθεύει τη λήψη ηχούς του C απλό σενάριο telnet χρόνος

TCP Προαιρετικές επιλογές (options) 33 Είναι ένας τρόπος να προστεθούν επιπλέον δυνατότητες που δεν καλύπτονται από την κανονική επικεφαλίδα Χρησιμοποιείται για παραγέμισμα της επικεφαλίδας TCP ώστε να είναι πολλαπλάσιο των 4 byte

TCP Αξιόπιστη μετάδοση 34 Το TCP δημιουργεί υπηρεσία αξιόπιστης μεταφοράς δεδομένων πάνω από την αναξιόπιστη υπηρεσία του ΙΡ Δύο τύποι σφαλμάτων Απωλεσθέντα τεμάχια Κατεστραμμένα τεμάχια Το TCP χρησιμοποιεί checksum (άθροισμα ελέγχου) για την επικεφαλίδα και τα δεδομένα Τεμάχια με μη έγκυρα αθροίσματα ελέγχου απορρίπτονται Ο δέκτης στέλνει επαληθεύσεις (ACKs) για τα σωστά τεμάχια Οι ACKs μπορεί να είναι συσσωρευτικές

TCP Αξιόπιστη μετάδοση 35 Το TCP χρησιμοποιεί ένα χρονόμετρο (timer) επαναμετάδοσης Οι επαναμεταδόσεις των τεμαχίων προκαλούνται από λήξεις χρόνου (expiration) ή από διπλές ACK Ο αριθμός της ACK είναι ο επόμενος αναμενόμενος αύξων αριθμός Καθυστερημένη ACK: ο δέκτης TCP συνήθως καθυστερεί (εσκεμμένα) τη μετάδοση μιας ACK (για περίπου 200ms) Οι ACK δεν καθυστερούνται εσκεμμένα όταν τα τεμάχια λαμβάνονται εκτός σειράς

TCP Αξιόπιστη μετάδοση Απλοποιημένος πομπός TCP 36 Περίπτωση άφιξης δεδομένων από το στρώμα εφαρμογής: Δημιουργία τεμαχίου με seq # Ο seq # αντιστοιχεί στο πρώτο byte του συρμού δεδομένων Εκκίνηση χρονομέτρου, εάν δεν ξεκίνησε ήδη (χρονόμετρο για προηγούμενο ανεπιβεβαίωτο τεμάχιο) Χρόνος εκπνοής: TimeOutInterval Περίπτωση εκπνοής χρόνου: Επαναμετάδοση του τεμαχίου που προκάλεσε timeout Επανεκκίνηση του timer Περίπτωση λήψη ACK: Αν επαληθεύει προηγούμενα μη- επαληθευμένα τεμάχια: n ενημέρωση των ήδη επαληθευμένων n εκκίνηση του timer αν υπάρχουν τεμάχια που εκκρεμούν

TCP Αξιόπιστη μετάδοση Σενάρια Επαναμετάδοσης 37 Host A Host B Host A Host B timeout X loss Seq=92 timeout Seq=92 timeout Σενάριο χαµένης ACK time time Πρόωρο timeout

TCP Αξιόπιστη μετάδοση Σενάρια Επαναμετάδοσης 38 Host A Host B timeout X loss time Σενάριο συγκεντρωτικής (συσσωρευτικής) ACK

TCP Αξιόπιστη μετάδοση Δημιουργία επαληθεύσεων 39 Γεγονός άφιξη τεµαχίου στην κανονική σειρά, όχι κενά, οτιδήποτε άλλο έχει ήδη επαληθευτεί άφιξη τεµαχίου στην κανονική σειρά, όχι κενά, εκκρεµεί µία καθυστερηµένη ACK άφιξη τεµαχίου εκτός σειράς µε µεγαλύτερο αύξοντα αριθµό από τον αναµενόµενο άφιξη τεµαχίου που εν µέρει ή πλήρως συµπληρώνει κενό Ενέργεια του δέκτη TCP καθυστερηµένη ACK, δηλ.: αναµονή 200ms για το επόµενο τεµάχιο - αν δεν υπάρχει επόµενο τεµάχιο, αποστολή ACK άµεση αποστολή µιας συσσωρευτικής ACK και για τα δύο τεµάχια που αφίχθησαν µε κανονική σειρά αποστολή επαναληπτικής ACK, που να δείχνει τον αύξοντα αριθµό του επόµενου αναµενόµενου byte άµεση αποστολή ACK, αν το τεµάχιο αρχίζει στο κατώτερο άκρο του κενού

TCP Αξιόπιστη μετάδοση Επαληθεύσεις στο TCP 40 Απώλεια τεµαχίου Άφιξη εκτός σειράς

TCP Αξιόπιστη μετάδοση Επαναμεταδόσεις στο TCP 41 Ένας πομπός TCP επαναμεταδίδει ένα τεμάχιο, όταν θεωρήσει ότι το υπόψη τεμάχιο έχει χαθεί, δηλ. όταν: Δεν έχει ληφθεί ACK και έχει λήξει το χρονόμετρο Έχουν ληφθεί πολλαπλές ACK για το ίδιο τεμάχιο

TCP Αξιόπιστη μετάδοση Ταχεία επαναμετάδοση 42 Η περίοδος timeout είναι συχνά σχετικά μεγάλη μεγάλη καθυστέρηση πριν την αποστολή του χαμένου πακέτου Ανίχνευση των χαμένων τεμαχίων μέσω διπλών επαληθεύσεων Ο πομπός στέλνει συχνά πολλά τεμάχια το ένα πίσω από το άλλο Αν χαθεί τεμάχιο, θα υπάρχουν ενδεχομένως πολλές ίδιες επαληθεύσεις Ταχεία επαναμετάδοση: επαναποστολή του τεμαχίου πριν τη λήξη της χρονομέτρησης

TCP Αξιόπιστη μετάδοση Λήψη πολλαπλών ACK 43 Αν ληφθούν τρεις ACK στη σειρά για τα ίδια δεδομένα, ο πομπός TCP θεωρεί ότι το τεμάχιο μετά τα επαληθευόμενα δεδομένα χάθηκε Τότε ο πομπός TCP επαναμεταδίδει το τεμάχιο που θεωρεί ότι χάθηκε, χωρίς να περιμένει τη λήξη χρόνου Τούτο διορθώνει μεμονωμένες απώλειες τεμαχίων

TCP Αξιόπιστη μετάδοση Διαχείριση χρονομετρητών 44 Το TCP χρησιμοποιεί πολλούς χρονομετρητές Ο σπουδαιότερος είναι ο χρονομετρητής επαναμετάδοσης (retransmission timer) Όταν στέλνεται ένα τεμάχιο, ξεκινά ένας χρονομετρητής αναμετάδοσης Αν η λήψη του τεμαχίου επαληθευτεί πριν εκπνεύσει ο χρόνος, τότε ο χρονομετρητής σταματά Αν εκπνεύσει ο χρόνος πριν φθάσει η επαλήθευση, το τεμάχιο μεταδίδεται ξανά Πόσο μεγάλο πρέπει να είναι το χρονικό διάστημα πριν λήξει η χρονομέτρηση;

TCP Αξιόπιστη μετάδοση Round Trip Time και Timeout 45 Πώς τίθεται η τιμή του timeout επαναμετάδοσης (Retransmission Timeout, RTO) στο TCP? μεγαλύτερη από RTT? n αλλά το RTT μεταβάλλεται πολύ μικρή? πρόωρο timeout n άσκοπες επαναμεταδόσεις πολύ μεγάλη? αργή αντίδραση, όταν χάνεται τεμάχιο Πώς προσδιορίζεται το RTT? SampleRTT: ο χρόνος από τη μετάδοση του τεμαχίου μέχρι τη λήψη της ACK Επειδή το SampleRTT μεταβάλλεται, είναι επιθυμητή μια εξομαλυμένη τιμή για το RTT, όχι το τρέχον SampleRTT

TCP Αξιόπιστη μετάδοση Round Trip Time και Timeout 46 Θα υπάρχει κάποια (άγνωστη) κατανομή των RTT Προσπαθούμε να εκτιμήσουμε ένα RTO για να ελαχιστοποιήσουμε την πιθανότητα μιας εσφαλμένης λήξης χρόνου Οι ουρές στους δρομολογητές μεγαλώνουν όταν υπάρχει περισσότερη κίνηση, μέχρι να υπάρξει αστάθεια Καθώς αυξάνει το φορτίο, η διακύμανση (variance) της καθυστέρησης αυξάνει απότομα Probability variance mean RTT Average Queueing Delay Η Variance αυξάνει απότοµα µε το φορτίο Κίνηση που φθάνει στον δρομολογητή

TCP Αξιόπιστη μετάδοση Ρύθμιση της τιμής του Timeout 47 Κάθε σύνδεση TCP μετράει τη χρονική διαφορά μεταξύ της αποστολής ενός τεμαχίου και της λήψης της αντίστοιχης ACK Υπάρχει μόνο μια μέτρηση σε ισχύ κάθε φορά (δηλ., οι μετρήσεις δεν επικαλύπτονται) Στο διπλανό σχήμα φαίνονται τρεις μετρήσεις RTT

TCP Αξιόπιστη μετάδοση Ρύθμιση της τιμής του Timeout 48 Η RTO υπολογίζεται βάσει των μετρήσεων του RTT Χρησιμοποιείται εκθετικός σταθμισμένος κινούμενος μέσος όρος (srtt) για την εκτιμώμενη καθυστέρηση και τη variance (rttvar) της καθυστέρησης Οι μετρήσεις RTT εξομαλύνονται ως εξής: srtt n+1 = a * SampleRTT + (1- a) * srtt n rttvar n+1 = b * ( SampleRTT - srtt n ) + (1- b) * rttvar n RTO n+1 = srtt n+1 + 4 * rttvar n+1 Οι τιμές των συντελεστών: a =1/8 και b =1/4

TCP Αξιόπιστη μετάδοση Ρύθμιση της τιμής του Timeout 49 350 300 RTT (milliseconds) 250 200 150 100 1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106 time (seconnds)

TCP - Αξιόπιστη μετάδοση 50 Ρύθμιση της τιμής του Timeout q Αρχική τιμή του RTO: q Ο πομπός θέτει την αρχική τιμή του RTO: RTO 0 = 3 sec Υπολογισμός του RTO μετά την πρώτη μέτρηση του RTT: srtt 1 = SampleRTT rttvar 1 = SampleRTT / 2 RTO 1 = srtt 1 + 4 rttvar 1

TCP - Αξιόπιστη μετάδοση 51 Ρύθμιση της τιμής του Timeout Αν ληφθεί ACK για τεµάχιο που επαναµεταδόθηκε, ο ποµπός δεν µπορεί να ξέρει αν η ACK ανήκει στο αρχικό ή στο τεµάχιο που επαναµεταδόθηκε. q Αλγόριθμος του Karn: q q q Μην ενημερώνεις την RTT για τεμάχια που επαναμεταδόθηκαν. Ξαναξεκίνα τις μετρήσεις RTT μόνο μετά τη λήψη ACK που αφορά κανονικό τεμάχιο. Όταν εμφανιστεί ένα timeout, η τιμή του RTO διπλασιάζεται (εκθετική οπισθοχώρηση) q RTO n+1 = min ( 2 RTO n, 64) seconds. RTT? RTT? Timeout! segment retransmission of segment ACK

TCP Διαχείριση συνδέσεων 52 Εγκατάσταση σύνδεσης Απόλυση σύνδεσης Ειδικά σενάρια Διαγράμματα καταστάσεων

TCP Εγκατάσταση σύνδεσης 53 Πριν ανταλλάξουν δεδομένα, ο πομπός και ο δέκτης πραγματοποιούν τριμερή χειραψία. q q Συμφωνούν για την εγκατάσταση της σύνδεσης (καθένας γνωρίζει ότι ο άλλος επιθυμεί την εγκατάσταση σύνδεσης). Συμφωνούν για τις παραμέτρους σύνδεσης. application connection state: ESTAB connection variables: seq # client-to-server server-to-client rcvbuffer size at server,client network application connection state: ESTAB connection Variables: seq # client-to-server server-to-client rcvbuffer size at server,client network

TCP Εγκατάσταση συνδέσεων Τριμερής χειραψία 54 Κατάσταση client LISTEN SYNSENT ESTAB επιλογή αύξ. αριθμ. x αποστολή μηνύματος TCP SYN αποστολή ACK για SYNACK; αυτό το τεμάχιο μπορεί να έχει και δεδομένα προς τον server SYNbit=1, Seq=x SYNbit=1, Seq=y ACKbit=1; ACKnum=x+1 ACKbit=1, ACKnum=y+1 επιλογή αύξ. αριθμ. y αποστολή μηνύματος TCP SYNACK Κατάσταση server LISTEN SYN RCVD λήψη ACK(y) ESTAB

TCP Απόλυση σύνδεσης 55 q Κάθε άκρο της ροής δεδομένων πρέπει να τερματίσει ανεξάρτητα ( half-close ): q αποστολή τεμαχίου TCP με το FIN bit = 1. q Απάντηση στο λαμβανόμενο FIN με ACK. q μετά τη λήψη FIN, το αποστελλόμενο ACK μπορεί να συνδυάζεται με αποστολή FIN. q Οι ταυτόχρονες ανταλλαγές FIN πρέπει να αντιμετωπίζονται

TCP Απόλυση σύνδεσης 56 Κατάσταση client ESTAB clientsocket.close() Κατάσταση server ESTAB FIN_WAIT_1 FIN_WAIT_2 δεν μπορεί να στείλει άλλα data, αλλά μπορεί να λάβει wait for server close FINbit=1, seq=x ACKbit=1; ACKnum=x+1 μπορεί ακόμη να στείλει data CLOSE_WAIT TIMED_WAIT FINbit=1, seq=y δεν μπορεί πλέον να στείλει data LAST_ACK timed wait 2*max segment lifetime ACKbit=1; ACKnum=y+1 CLOSED CLOSED

TCP Παράδειγμα εγκατάστασης σύνδεσης 57 Εγκατάστασης σύνδεσης: Βήμα 1 Seq:i SYN Win Port 34278 Port 80 A SYN_SENT B LISTEN

TCP Παράδειγμα εγκατάστασης σύνδεσης 58 Εγκατάστασης σύνδεσης: Βήμα 2 Port 34278 Port 80 A SYN_SENT Seq:j ACK:i+1 SYN,ACKWin B SYN_RCVD

TCP Παράδειγμα εγκατάστασης σύνδεσης 59 Εγκατάστασης σύνδεσης: Βήμα 3 Seq:i+1 ACK:j+1 ACK Win Port 34278 Port 80 A B ESTABLISHED SYN_RCVD

TCP Παράδειγμα εγκατάστασης σύνδεσης 60 Και οι δύο στην κατάσταση ESTABLISHED, ανταλλαγή δεδομένων... Port 34278 Port 80 A B ESTABLISHED ESTABLISHED

TCP - Απόλυση σύνδεσης 61 Απόλυση σύνδεσης: Βήμα 1 Seq:t ACK:q FIN Win Port 34278 Port 80 A B FIN_WAIT_1 ESTABLISHED

TCP - Απόλυση σύνδεσης 62 Απόλυση σύνδεσης: Βήμα 2 Port 34278 Port 80 A FIN_WAIT_1 Seq:q ACK:t+1 ACK Win B CLOSE_WAIT

TCP - Απόλυση σύνδεσης 63 Η εφαρμογή στον Β πρέπει να κλείσει Port 34278 Port 80 A B FIN_WAIT_2 CLOSE_WAIT

TCP - Απόλυση σύνδεσης 64 Απόλυση σύνδεσης: Βήμα 3 Port 34278 Port 80 A FIN_WAIT_2 Seq:p ACK:t+1 FIN Win B LAST_ACK

TCP - Απόλυση σύνδεσης 65 Απόλυση σύνδεσης: Βήμα 4 Seq:t+1 ACK:p+1 ACK Win Port 34278 Port 80 A B TIME_WAIT LAST_ACK

TCP - Απόλυση σύνδεσης 66 Ο Client περιμένει 2*MSL πριν μεταβεί στην κατάσταση CLOSED (ο B μπορεί να ξαναστείλει ένα FIN) Port 34278 Port 80 A TIME_WAIT B CLOSED

TCP Διαχείριση συνδέσεων 67 Κατάσταση αναμονής 2MSL = TIME_WAIT Όταν το TCP κάνει active close, και στέλνει την τελική ACK, η σύνδεση πρέπει να παραμείνει στην κατάσταση TIME_WAIT για διπλάσιο χρόνο από τη μέγιστη ζωή τεμαχίων (maximum segment lifetime, MSL) 2MSL= 2 * Maximum Segment Lifetime Γιατί; Δίνεται στον TCP client μια ευκαιρία επαναποστολής της τελικής ACK. (Ο server θα κάνει timeout αφού στείλει το τεμάχιο FIN και θα ξαναστείλει το FIN) Το MSL τίθεται στα 2 min ή 1 min ή 30 sec

TCP Διαχείριση συνδέσεων 68 TIME_WAIT active close application close( ) FIN_WAIT1 passive close CLOSE_WAIT EOF to application FIN_WAIT2 2MSL TIME_WAIT LAST_ACK timeout αναµένοντας ACK

TCP Επαναφορά συνδέσεων 69 Η επαναφορά (reset) συνδέσεων γίνεται με την ενεργοποίηση της σημαίας RST Πότε ενεργοποιείται η σημαία RST; Όταν φθάνει η αίτηση σύνδεσης και δεν αναμένει καμία διαδικασία server στο σημείο προορισμού. Όταν αποσταλεί τεμάχιο που δεν αναμένεται καθόλου σε υπάρχουσα σύνδεση, π.χ. ο αύξων αριθμός είναι εκτός περιοχής. Η επαναφορά μιας σύνδεσης αναγκάζει τον δέκτη του RST να πετάξει τα αποθηκευμένα δεδομένα. Ο δέκτης δεν επαληθεύει το τεμάχιο RST.

TCP Μεταφορά δεδομένων 70 Η µεταφορά δεδοµένων µέσω TCP µπορεί να χαρακτηριστεί ως: αλληλοδραστική μεταφορά μαζική μεταφορά - telnet, rlogin - ftp, mail, http Το TCP έχει ευριστικές µεθόδους για να χειρίζεται αυτούς τους τύπους µεταφοράς δεδοµένων. Για αλληλοδραστική µεταφορά δεδοµένων: Ø Επιχειρεί να περιορίσει τον αριθµό των πακέτων Για µαζική µεταφορά δεδοµένων: Ø Επιχειρεί να ελέγξει τη ροή δεδοµένων

TCP Μεταφορά δεδομένων 71 Αλληλοδραστικές εφαρμογές Telnet q Οι εφαρµογές αποµακρυσµένου τερµατικού (π.χ., Telnet) στέλνουν χαρακτήρες σε έναν server. Ο server επεξεργάζεται τον χαρακτήρα και στέλνει την έξοδό του στον client. Για κάθε πληκτρολογούµενο χαρακτήρα, βλέπουµε 3 πακέτα: 1. Client à Server: Αποστολή πληκτρολογούµενου χαρακτήρα 2. Server à Client: Επαλήθευση του πρώτου πακέτου και ηχώ του χαρακτήρα 3. Client à Server: Επαλήθευση του δεύτερου πακέτου 3. αποστολή ηχούς του χαρακτήρα και/ή της εξόδου 1. Αποστολή χαρακτήρα 2. επεξήγηση χαρακτήρα Telnet client Telnet server

TCP Μεταφορά δεδομένων 72 Αλληλοδραστικές εφαρμογές Telnet q Θα αναμέναμε 4 πακέτα ανά χαρακτήρα: character ACK of character echo of character ACK of echoed character q Ωστόσο, εμφανίζεται η παραπλεύρως απεικονιζόμενη μορφή: character ACK and echo of character q Το TCP έχει καθυστερήσει την αποστολή μιας ACK ACK of echoed character

TCP Μεταφορά δεδομένων 73 Σύνοδος Telnet σε απομακρυσμένο host Παρατήρηση: Η μετάδοση των τεμαχίων ακολουθεί διαφορετικό τρόπο, δηλ., υπάρχουν μόνο δύο πακέτα ανά πληκτρολογούμενο χαρακτήρα. char1 ACK of char 1 + echo of char1 ACK + char2 ACK + echo of char2 Η καθυστερημένη επαλήθευση δεν εμφανίζεται. Ο λόγος είναι ότι υπάρχουν πάντα δεδομένα έτοιμα προς αποστολή, όταν φθάνει η ACK

TCP Μεταφορά δεδομένων 74 Αλγόριθμος του Nagle Έχει ως στόχο την αποφυγή της μη αποτελεσματικής χρήσης του εύρους ζώνης Πομπός: Δέκτης: αποθηκεύει προσωρινά όλα τα δεδομένα χρήστη, αν εκκρεμούν ανεπαλήθευτα δεδομένα, στέλνει, όταν όλα έχουν επαληθευτεί ή έχει δεδομένα που συμπληρώνουν ένα τεμάχιο MSS. δίνει εντολή αποστολής, μόνο όταν μπορεί να αυξήσει επαρκώς το παράθυρο λήψης

TCP Μεταφορά δεδομένων 75 Αλγόριθμος του Nagle Μόνο ένα τεμάχιο ενός byte μπορεί να μεταδίδεται (Επειδή δεν υπάρχουν δεδομένα προς αποστολή από τον Β προς Α έχουμε καθυστερημένες ACK) Πληκτρολογούµενοι χαρακτήρες A B καθυστερημένη ACK καθυστερημένη ACK καθυστερημένη ACK

TCP Μεταφορά δεδομένων Ιδιότητες του αλγορίθμου του Nagle 76 Εφαρμόζεται μόνο σε μικρά πακέτα. Στις μεταφορές μεγάλων αρχείων υπάρχουν πάντα πλήρη MSS για αποστολή. Ο αλγόριθμος είναι αυτοχρονιζόμενος: Βασικά εφαρμόζει Stop & Wait για μικρά τεμάχια. Σε LAN, το μικρό RTT δεν εισάγει μεγάλη αναμονή, οπότε ο αλγόριθμος δεν είναι αποτελεσματικός. Σε WAN, το μεγάλο RTT εισάγει περισσότερη αναμονή, αλλά ο αλγόριθμος είναι πιο αποτελεσματικός σε μακριές ζεύξεις. Όταν απαιτείται μικρή καθυστέρηση, ο αλγόριθμος προκαλεί ανεπιθύμητες καθυστερήσεις. Οι εφαρμογές μπορεί να απενεργοποιήσουν τον αλγόριθμο

TCP Έλεγχος ροής 77 Η πλευρά λήψης της σύνδεσης TCP έχει έναν καταχωρητή λήψης: Παράθυρο δέκτη Δεδομένα από στρώμα ΙΡ Ελεύθερος χώρος Δεδομένα TCP Διαδικασία εφαρμογής Καταχωρητής λήψης Η διαδικασία εφαρμογής μπορεί να αργεί να διαβάσει από τον καταχωρητή λήψης Έλεγχος ροής: ο πομπός δεν πρέπει να υπερχειλίσει τον καταχωρητή του δέκτη μεταδίδοντας πολλά, πολύ γρήγορα. Προσαρμογή του ρυθμού αποστολής δεδομένων στον ρυθμό ανάγνωσης της λαμβάνουσας εφαρμογής

TCP Έλεγχος ροής 78 Το TCP χρησιμοποιεί έλεγχο ροής με ολισθαίνον παράθυρο: Ø Ø δεν χρησιμοποιεί NACK μόνο συσσωρευτικές ACK Ø Οι επαληθεύσεις δεν προκαλούν αυτόματα αλλαγές στο μέγεθος παραθύρου του πομπού. Ø Ο δέκτης επιστρέφει δύο παραμέτρους στον πομπό. AckNo window size (win) 32 bits 16 bits Ø Ο πομπός μπορεί να στείλει δεδομένα μέχρι το διαφημιζόμενο παράθυρο, δηλαδή, τα byte: AckNo, AckNo+1,, AckNo + win - 1 Ø Ο δέκτης μπορεί να επαληθεύσει χωρίς να αλλάξει το παράθυρο. Ø Ο δέκτης μπορεί να αλλάξει το παράθυρο χωρίς να επαληθεύσει.

TCP- Έλεγχος ροής Ολισθαίνον παράθυρο 79 Το πρωτόκολλο ολισθαίνοντος παραθύρου λειτουργεί σε επίπεδο byte: Αναγγελλόµενο παράθυρο 1 2 3 4 5 6 7 8 9 10 11 Σταλθέντα και επαληθευθέντα Σταλθέντα, µη επαληθευθέντα επιτρέπεται να σταλθούν χρήσιμο παράθυρο απαγορεύεται να σταλθούν Ο πομπός μπορεί να στείλει μόνο τους αύξοντες αριθμούς 6,7,8

TCP- Έλεγχος ροής Ολισθαίνον παράθυρο: κλείσιμο 80 Αποστολή ενός byte (με SeqNo = 6) και λήψη της επαλήθευσης (AckNo = 5, Win=4): 1 2 3 4 5 6 7 8 9 10 11 Μετάδοση του Byte 6 1 2 3 4 5 6 7 8 9 10 11 AckNo = 5, Win = 4 1 2 3 4 5 6 7 8 9 10 11

TCP- Έλεγχος ροής Ολισθαίνον παράθυρο: άνοιγμα 81 Λήψη επαλήθευσης που μεγαλώνει το παράθυρο προς τα δεξιά (AckNo = 5, Win=6): 1 2 3 4 5 6 7 8 9 10 11 AckNo = 5, Win = 6 1 2 3 4 5 6 7 8 9 10 11 Ο δέκτης ανοίγει το παράθυρο όταν ο καταχωρητής TCP αδειάζει (εννοώντας ότι τα δεδομένα παραδίδονται στην εφαρμογή)

TCP- Έλεγχος ροής Ολισθαίνον παράθυρο: συρρίκνωση 82 Λήψη επαλήθευσης που περιορίζει το παράθυρο από δεξιά (AckNo = 5, Win=3) 1 2 3 4 5 6 7 8 9 10 11 AckNo = 5, Win = 3 1 2 3 4 5 6 7 8 9 10 11 Η συρρίκνωση παραθύρου δεν πρέπει να χρησιμοποιείται

TCP- Έλεγχος ροής 83 Πομπός 2K 2K SEQ=0 Δέκτης Ολισθαίνον παράθυρο: παράδειγμα Buffer 0 4K ACK=2048, WIN=2048 2K 2K SEQ=2048 µπλοκάρει ACK=4096, WIN=0 ACK=4096, WIN=2048 2K 1K 1K SEQ=4096

Άσκηση 84 Οι host A και B επικοινωνούν μέσω σύνδεσης TCP και ο B έχει ήδη λάβει από τον A όλα τα byte μέχρι το 144. Υποθέστε ότι ο A στέλνει στη συνέχεια δύο τεμάχια το ένα πίσω από το άλλο που περιέχουν 20 και 40 byte δεδομένων, αντίστοιχα. Στο πρώτο τεμάχιο η θύρα πηγής είναι 303 και η θύρα προορισμού είναι 80. Ο B στέλνει επαλήθευση όποτε λαμβάνει τεμάχιο από τον Α. 1. Στο δεύτερο τεμάχιο που εστάλη από τον Α στον Β, ποιος είναι ο αύξων αριθμός, η θύρα πηγής και η θύρα προορισμού; 2. Αν το πρώτο τεμάχιο αφιχθεί πριν από το δεύτερο, ποιος θα είναι ο αριθμός επαλήθευσης, η θύρα πηγής και η θύρα προορισμού στην επαλήθευση του πρώτου τεμαχίου; 3. Αν το δεύτερο τεμάχιο αφιχθεί πριν από το πρώτο, ποιος θα είναι ο αριθμός επαλήθευσης στην επαλήθευση του πρώτου αφικνούμενου τεμαχίου; 4. Υποθέστε ότι τα δύο τεμάχια του Α φθάνουν με τη σειρά στον Β. Η επαλήθευση για το πρώτο τεμάχιο χάνεται και η επαλήθευση για το δεύτερο τεμάχιο καταφθάνει μετά την εκπνοή χρονομέτρου του πρώτου τεμαχίου. Σχεδιάστε ένα διάγραμμα με όλα τα τεμάχια και τις επαληθεύσεις που στάλθηκαν. Για κάθε τεμάχιο δώστε τον αύξοντα αριθμό και τον αριθμό byte δεδομένων, ενώ για κάθε επαλήθευση δώστε τον αριθμό επαλήθευσης.

85 Ευχαριστώ για την προσοχή σας!