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

Σχετικά έγγραφα
Πρωτόκολλα Διαδικτύου

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΑΝΑΛΥΣΗ TCP ΚΙΝΗΣΗΣ ΜΕ ΤΟ ΠΡΟΓΡΑΜΜΑ TCPTRACE.

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

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

HY-335a Project: microtcp, μία lightweight TCP βιβλιοθήκη. Deadline πρώτης ϕάσης : 19/11/ :59

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

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

How do loss and delay occur?

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

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

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

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

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

Transmission Control Protocol. Transmission Control Protocol

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

Επαλήθευση Πρωτοκόλλων

Μηχανισμοί Λογικής σύνδεσης. Διάρθρωση. Δομή πλαισίου. Καθορισμός ορίων πλαισίου

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

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

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

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

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

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

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

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη

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

Δίκτυα Υπολογιστών. Αξιόπιστη επικοινωνία μέσα από ένα σύνδεσμο. Ευάγγελος Παπαπέτρου. Τμ. Μηχ. Η/Υ & Πληροφορικής, Παν. Ιωαννίνων

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ

Προχωρημένα Θέματα Προγραμματισμού Δικτύων

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

ΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Εργαστηριακή Άσκηση 5

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

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

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

Εξοικείωση με τις εντολές ipconfig και ping

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

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

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

Μέθοδοι Ελέγχου Σφαλμάτων

Διάρθρωση. Δίκτυα Υπολογιστών Αξιόπιστη επικοινωνία μέσα από ένα σύνδεσμο. Αναγκαιότητα και ορισμός λογικής σύνδεσης. Διάρθρωση

Πρωτόκολλο ICMP (Internet Control Message Protocol)

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

Transcript:

Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Πρωτόκολλα Διαδικτύου 7 η Διάλεξη Δημοσθένης Κυριαζής Παρασκευή 8 Μαΐου 2015

Σημερινή διάλεξη Σύνοψη 6ης διάλεξης Επίπεδο μεταφοράς Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Go-Back-N Selective repeat Εισαγωγή TCP Δομή TCP segment Α/Α και ACKs στο TCP TCP Round Trip Time και Timeout Αξιόπιστη μεταφορά δεδομένων TCP Δημιουργία TCP ACK Γρήγορη επαναποστολή TCP Έλεγχος ροής Διαχείριση συνδέσεων Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 2

Αρχές αξιόπιστης μεταφοράς δεδομένων Σημαντικό στα επίπεδα εφαρμογής, μεταφοράς και ζεύξης Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 3

rdt2.0: Κανάλι με σφάλματα σε bit Το κανάλι μπορεί να αλλάξει bits στο πακέτο Διαπίστωση σφαλμάτων με checksum (πρόσθετα bits στο πακέτο) Ανάκτηση από σφάλματα acknowledgements (ACK): Ο παραλήπτης λέει στον αποστολέα ότι το πακέτο ελήφθη χωρίς σφάλματα negative acknowledgements (NAK): Ο παραλήπτης λέει στον αποστολέα ότι το πακέτο ελήφθη με σφάλματα Ο αποστολέα στέλνει ξανά το πακέτο όταν λάβει NAK Πρωτόκολλα Automatic Repeat request (ARQ) Νέοι μηχανισμοί στο rdt2.0 Διαπίστωση σφαλμάτων Πληροφόρηση από παραλήπτη (ACK,NAK) Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 4

rdt2.0: Λειτουργία χωρίς σφάλματα rdt_send(data) snkpkt = make_pkt(data, checksum) udt_send(sndpkt) Wait for call from above rdt_rcv(rcvpkt) && isack(rcvpkt) L Wait for ACK or NAK rdt_rcv(rcvpkt) && isnak(rcvpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(nak) Wait for call from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ack) 5

rdt2.0: Λειτουργία με σφάλματα rdt_send(data) snkpkt = make_pkt(data, checksum) udt_send(sndpkt) Wait for call from above rdt_rcv(rcvpkt) && isack(rcvpkt) L Wait for ACK or NAK rdt_rcv(rcvpkt) && isnak(rcvpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(nak) Wait for call from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ack) 6

Το rdt2.0 έχει ένα μεγάλο πρόβλημα! Τι συμβαίνει όταν υπάρχουν σφάλματα στα ACK/NAK? Περισσότερα ACK/NAK Πιο πολλά bit στο checksum για ανίχνευση και ανάκτηση από σφάλματα Αποστολή ξανά του πακέτου (επανάληψη) Διακοπή και αναμονή (stop and wait) Ο αποστολέας στέλνει ένα πακέτο και περιμένει απάντηση από τον παραλήπτη Διαχείριση επαναλήψεων (duplicates) Ο αποστολέας ξαναστέλνει το πακέτο εάν υπάρχουν σφάλματα σε ACK/NAK Ο αποστολέας προσθέτει αύξοντα αριθμό (sequence number) σε κάθε πακέτο Ο παραλήπτης απορρίπτει (δεν προωθεί στην εφαρμογή) επαναλαμβανόμενα πακέτα

rdt2.2: Ένα πρωτόκολλο NAK-free Ίδια λειτουργικότητα με το rdt2.1 Χρήση μόνο ACK Αντί για NAK, ο παραλήπτης στέλνει ACK για το τελευταίο πακέτο που έλαβε χωρίς σφάλματα Ο παραλήπτης πρέπει να εισάγει τον αύξοντα αριθμό του πακέτου για οποίο στέλνει το ACK Επαναλαμβανόμενα (duplicate) ACK στον αποστολέα οδηγούν στην ίδια ενέργεια όπως και στην περίπτωση του NAK: επαναποστολή του πακέτου Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 8

Σημερινή διάλεξη Σύνοψη 6ης διάλεξης Επίπεδο μεταφοράς Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Go-Back-N Selective repeat Εισαγωγή TCP Δομή TCP segment Α/Α και ACKs στο TCP TCP Round Trip Time και Timeout Αξιόπιστη μεταφορά δεδομένων TCP Δημιουργία TCP ACK Γρήγορη επαναποστολή TCP Έλεγχος ροής Διαχείριση συνδέσεων Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 9

rdt3.0: Κανάλια με σφάλματα και απώλειες Προσθήκη στο rdt3.0 Τα κανάλια επικοινωνίας μπορούν να χάνουν πακέτα (δεδομένα, ACK) Τα checksum, Α/Α, ACK, και οι επαναποστολές βοηθούν αλλά δεν αρκούν Προσέγγιση: Ο αποστολέας περιμένει κάποιο εύλογο χρονικό διάστημα για ACK Eπαναποστολή αν δε λάβει ACK σε αυτό το διάστημα Εάν το πακέτο (ή το ACK) απλά καθυστερήσουν (δε χαθούν) Θα υπάρχει επανάληψη στην επαναποστολή, το οποίο όμως διαχειρίζεται από τους Α/Α Ο παραλήπτης πρέπει να καθορίζει τον Α/Α του πακέτου που γίνεται ACK Απαιτεί τη χρήση χρονομέτρου (countdown timer) Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 10

FSM αποστολέα rdt3.0 rdt_rcv(rcvpkt) L Wait for call 0from above rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt,1) stop_timer timeout udt_send(sndpkt) start_timer rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) isack(rcvpkt,0) ) L Wait for ACK1 rdt_send(data) sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) start_timer rdt_send(data) Wait for ACK0 Wait for call 1 from above sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt) start_timer rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) isack(rcvpkt,1) ) L timeout udt_send(sndpkt) start_timer rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt,0) stop_timer rdt_rcv(rcvpkt) L 11

Εφαρμογή rdt3.0 (1/2) Αποστολέας Παραλήπτης Αποστ. pkt0 Λήψη ack0 Αποστ. pkt1 Λήψη ack1 Αποστ. pkt0 pkt0 ack0 pkt1 ack1 pkt0 ack0 Χωρίς απώλειες πακέτων Λήψη pkt0 Αποστ. ack0 Λήψη pkt1 Αποστ. ack1 Λήψη pkt0 Αποστ. ack0 Αποστολέας Αποστ. pkt0 Λήψη ack0 Αποστ. pkt1 timeout Επαναπ. pkt1 Λήψη ack1 Αποστ. pkt0 pkt0 ack0 pkt1 X απώλεια pkt1 ack1 pkt0 ack0 Παραλήπτης Λήψη pkt0 Αποστ. ack0 Λήψη pkt1 Αποστ. ack1 Λήψη pkt0 Αποστ. ack0 Με απώλειες πακέτων 12

Εφαρμογή rdt3.0 (2/2) Αποστολέας Αποστ. pkt0 Λήψη ack0 Αποστ. pkt1 timeout Επαν. pkt1 Λήψη ack1 Αποστ. pkt0 pkt0 ack0 pkt1 ack1 X απώλεια pkt1 ack1 pkt0 ack0 Παραλήπτης Λήψη pkt0 Αποστ. ack0 Λήψη pkt1 Αποστ. ack1 Λήψη pkt1 (ανίχν. επαναλ.) Αποστ. ack1 Λήψη pkt0 Αποστ. ack0 Αποστολέας Αποστ. pkt0 Λήψη ack0 Αποστ. pkt1 timeout Επαναπ. pkt1 Λήψη ack1 Αποστ. pkt0 Λήψη ack1 Αποστ. pkt0 pkt0 ack0 pkt1 ack1 pkt1 pkt0 ack1 ack0 pkt0 ack0 Παραλήπτης Λήψη pkt0 Αποστ. ack0 Λήψη pkt1 Αποστ. ack1 Λήψη pkt1 (ανίχν. επαναλ.) Αποστ. ack1 Λήψη pkt0 Αποστ. ack0 Λήψη pkt0 (ανίχν. επαναλ.) Αποστ. ack0 Απώλειες ACK Timeout / «αργοπορημένο» ACK

Απόδοση rdt3.0 Το rdt3.0 λειτουργεί σωστά αλλά έχει χαμηλή απόδοση Π.χ. πακέτο 8000 bit, 1 Gbps link, (RTT=30 ms) 15ms καθυστέρηση μεταφοράς (propagation delay) Τελευταίο bit στο κανάλι: D trans = L R 8000 bits = = 8 microsecs 10 9 bits/sec U sender : Χρησιμοποίηση (utilization) κλάσμα του χρόνου που ο αποστολέας απασχολείται με αποστολές πακέτων U sender = L / R RTT + L / R =.008 30.008 = 0.00027 Άρα 1KB πακέτο κάθε 30 msec: 33kB/sec throughput σε link 1 Gbps To πρωτόκολλο περιορίζει τη χρήση των φυσικών πόρων! 14

rdt3.0: Λειτουργία stop-and-wait Μετάδοση πρώτου bit πακέτου, t = 0 Αποστολή τελευταίου bit, t = L / R Αποστολέας Παραλήπτης RTT Άφιξη πρώτου bit πακέτου Άφιξη τελευταίου bit, αποστολή ACK Άφιξη ACK, αποστολή επόμενου πακέτου, t = RTT + L / R U sender = L / R RTT + L / R =.008 30.008 = 0.00027 Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 15

Σημερινή διάλεξη Σύνοψη 6ης διάλεξης Επίπεδο μεταφοράς Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Go-Back-N Selective repeat Εισαγωγή TCP Δομή TCP segment Α/Α και ACKs στο TCP TCP Round Trip Time και Timeout Αξιόπιστη μεταφορά δεδομένων TCP Δημιουργία TCP ACK Γρήγορη επαναποστολή TCP Έλεγχος ροής Διαχείριση συνδέσεων Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 16

Πρωτόκολλα pipelined Pipelining: Ο αποστολέας επιτρέπει την μετάδοση πολλαπλών πακέτων για τα οποία ακόμα δεν έχουν φθάσει ACK Πρέπει να αυξηθεί το εύρος των Α/Α (sequence numbers) Απαιτείται buffering στον αποστολέα και / ή στον παραλήπτη 2 μορφές πρωτοκόλλων pipelined: Go-Back-N (GBN), Selective Repeat (SR) 17

Pipelining: Αύξηση χρησιμοποίησης (utilization) Μετάδ. πρώτου bit πακέτου, t = 0 Αποστολή τελευταίου, t = L / R Αποστολέας Παραλήπτης RTT Άφιξη ACK, αποστολή επόμενου πακέτου, t = RTT + L / R Άφιξη πρώτου bit πακέτου Άφιξη τελευταίου bit, αποστολή ACK Άφιξη τελ. bit 2 ου πακέτου, ACK Άφιξη τελ. bit 3 ου πακέτου, ACK Pipelining 3-πακέτων αυξάνει τη χρησιμοποίηση x3 U sender = 3L / R RTT + L / R =.0024 30.008 = 0.00081 18

Πρωτόκολλα pipelined ανάκτησης σφαλμάτων Go-back-N Ο αποστολέας μπορεί να έχει μέχρι N πακέτα χωρίς ACK στο pipeline Ο παραλήπτης στέλνει μόνο συσσωρευτικά (cumulative) ACK Δεν στέλνει ACK για πακέτο αν υπάρχει κενό Ο αποστολέας έχει χρονόμετρο για το παλαιότερο μήνυμα χωρίς ACK Όταν λήξει γίνεται επαναποστολή όλων των πακέτων χωρίς ACK Selective Repeat Ο αποστολέας μπορεί να έχει μέχρι N πακέτα χωρίς ACK στο pipeline Ο παραλήπτης στέλνει μεμονωμένα (individual) ACK για κάθε πακέτο Ο αποστολέας έχει χρονόμετρο για κάθε μήνυμα χωρίς ACK Όταν λήξει γίνεται επαναποστολή μόνο για το πακέτο χωρίς ACK 19

Σημερινή διάλεξη Σύνοψη 6ης διάλεξης Επίπεδο μεταφοράς Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Go-Back-N Selective repeat Εισαγωγή TCP Δομή TCP segment Α/Α και ACKs στο TCP TCP Round Trip Time και Timeout Αξιόπιστη μεταφορά δεδομένων TCP Δημιουργία TCP ACK Γρήγορη επαναποστολή TCP Έλεγχος ροής Διαχείριση συνδέσεων Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 20

Go-Back-N: Αποστολέας Κεφαλίδα (header) πακέτου με Α/Α k-bit Παράθυρο που επιτρέπει μέχρι N, διαδοχικά πακέτα χωρίς ACK ACK(n): ACK για όλα τα πακέτα με Α/Α (συμπεριλαμβανομένου) n - cumulative ACK Μπορεί να λάβει επαναλαμβανόμενα ACK Χρονόμετρο για το παλαιότερο μήνυμα που μεταδίδεται timeout(n): επαναποστολή πακέτου n και όλων με μεγαλύτερο Α/Α στο παράθυρο

GBN: FSM Αποστολέα L base=1 nextseqnum=1 rdt_rcv(rcvpkt) && corrupt(rcvpkt) L rdt_send(data) if (nextseqnum < base+n) { sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum) udt_send(sndpkt[nextseqnum]) if (base == nextseqnum) start_timer nextseqnum++ } else refuse_data(data) Wait rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) base = getacknum(rcvpkt)+1 If (base == nextseqnum) stop_timer else start_timer timeout start_timer udt_send(sndpkt[base]) udt_send(sndpkt[base+1]) udt_send(sndpkt[nextseqnum-1]) 22

GBN: FSM Παραλήπτη default udt_send(sndpkt) L expectedseqnum=1 Wait sndpkt = make_pkt(expectedseqnum,ack,chksum) rdt_rcv(rcvpkt) && notcurrupt(rcvpkt) && hasseqnum(rcvpkt,expectedseqnum) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(expectedseqnum,ack,chksum) udt_send(sndpkt) expectedseqnum++ Μόνο ACK: Πάντα αποστολή ACK για μηνύματα που έχουν ληφθεί σωστά με το μεγαλύτερο Α/Α στη σωστή σειρά (in-order) Μπορεί να παραχθούν επαναλαμβανόμενα ACK Χρειάζεται μόνο η αποθήκευση του expectedseqnum Πακέτα εκτός σειράς (out-of-order) Απορρίπτονται (δε γίνονται buffer): μη buffering στον παραλήπτη! Ξαναγίνεται ACK για το πακέτο με το μεγαλύτερο Α/Α στη σωστή σειρά (inorder) 23

Εφαρμογή GBN Παράθυρο απ. (N=4) 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 Αποστολέας Αποστολή pkt0 Αποστολή pkt1 Αποστολή pkt2 Αποστολή pkt3 Αναμονή (wait) Λήψη ack0, απ. pkt4 Λήψη ack1, απ. pkt5 Αγνοεί επαναλαμβανόμενο ACK pkt 2 timeout Αποστολή pkt2 Αποστολή pkt3 Αποστολή pkt4 Αποστολή pkt5 X loss Παραλήπτης Λήψη pkt0, αποστολή ack0 Λήψη pkt1, αποστολή ack1 Λήψη pkt3, απόρριψη, επαναποστολή ack1 Λήψη pkt4, απόρριψη, επαναποστολή ack1 Λήψη pkt5, απόρριψη, επαναποστολή ack1 Λήψη pkt2, παραδ., απ. ack2 Λήψη pkt3, παραδ., απ. ack3 Λήψη pkt4, παραδ., απ. ack4 Λήψη pkt5, παραδ., απ. ack5

Σημερινή διάλεξη Σύνοψη 6ης διάλεξης Επίπεδο μεταφοράς Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Go-Back-N Selective repeat Εισαγωγή TCP Δομή TCP segment Α/Α και ACKs στο TCP TCP Round Trip Time και Timeout Αξιόπιστη μεταφορά δεδομένων TCP Δημιουργία TCP ACK Γρήγορη επαναποστολή TCP Έλεγχος ροής Διαχείριση συνδέσεων Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 25

Selective repeat Ο παραλήπτης μεμονωμένα στέλνει ACK για όλα τα πακέτα που έλαβε σωστά Αποθηκεύει (buffer) τα πακέτα, αν χρειάζεται, ώστε να τα παραδώσει στη σωστή σειρά στο επάνω επίπεδο Ο αποστολέας ξαναστέλνει μόνο τα πακέτα για τα οποία δεν έχει λάβει ACK Ο αποστολέας έχει χρονόμετρο για κάθε πακέτο χωρίς ACK Το παράθυρο του αποστολέα N διαδοχικών Α/Α Περιορίζει τον αριθμό των Α/Α των πακέτων που έχουν σταλεί χωρίς ACK Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 26

Selective repeat: Παράθυρα αποστολέα, παραλήπτη (1/2) 27

Λειτουργία selective repeat Δεδομένα από επάνω Εάν ο επόμενος διαθέσιμος Α/Α είναι στο παράθυρο, αποστολή πακέτου timeout(n) Επαναποστολή πακέτου n, επανεκκίνηση χρονομέτρου ACK(n) στο διάστημα [sendbase,sendbase+n] Αποστολέας Σημείωση πακέτου n ως ληφθέν Εάν το μικρότερο πακέτο χωρίς ACK είναι το n, μετατόπιση βάσης παραθύρου στο επόμενο Α/Α μηνύματος χωρίς ACK Πακέτο n στο διάστημα [rcvbase, rcvbase+n-1] Αποστολή ACK(n) Εκτός σειράς (out-of-order): buffer Στη σωστή σειρά (in-order): παράδοση (παράδοση και άλλων σε σειρά που ήταν στο buffer), μετατόπιση παραθύρου στο επόμενο πακέτου που ακόμα δεν έχει ληφθεί Πακέτο n στο διάστημα [rcvbase-n,rcvbase-1] ACK(n) Διαφορετικά Το αγνοεί Παραλήπτης

Εφαρμογή selective repeat Παράθυρο απ. (N=4) 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 Αποστολέας Αποστολή pkt0 Αποστολή pkt1 Αποστολή pkt2 Αποστολή pkt3 Αναμονή (wait) Λήψη ack0, απ. pkt4 Λήψη ack1, απ. pkt5 Καταγραφή λήψης ack3 pkt 2 timeout Αποστολή pkt2 Καταγραφή λήψης ack4 Καταγραφή λήψης ack5 X loss Παραλήπτης Λήψη pkt0, απ. ack0 Λήψη pkt1, απ. ack1 Λήψη pkt3, buffer, απ. ack3 Λήψη pkt4, buffer, απ. ack4 Λήψη pkt5, buffer, απ. ack5 Λήψη pkt2; παράδοση pkt2, pkt3, pkt4, pkt5; απ. ack2 Τι συμβαίνει όταν φθάνει το ack2? 29

Selective repeat: Δίλημμα Παράδειγμα: Α/Α πακέτων: 0, 1, 2, 3 Μέγεθος παραθύρου = 3 Ο παραλήπτης δε βλέπει κάποια διαφορά στα 2 σενάρια! Τα επαναλαμβάνομενα δεδομένα γίνονται δεκτά ως νέα (β) Ποια πρέπει να είναι η σχέση μεταξύ του εύρους των Α/Α και του μεγέθους του παραθύρου? Παράθυρο αποστολέα (μετά την παραλαβή) 0 1 2 3 0 1 2 0 1 2 3 0 1 2 0 1 2 3 0 1 2 0 1 2 3 0 1 2 0 1 2 3 0 1 2 pkt0 pkt0 pkt1 0 1 2 3 0 1 2 pkt2 X X timeout retransmit pkt0 X 0 1 2 3 0 1 2 pkt0 (β) Πρόβλημα! pkt1 pkt2 0 1 2 3 0 1 2 pkt3 0 1 2 3 0 1 2 pkt0 X (a) Χωρίς πρόβλημα Παράθυρο παραλήπτη (μετά την παραλαβή) 0 1 2 3 0 1 2 0 1 2 3 0 1 2 0 1 2 3 0 1 2 Το πακέτο με Α/Α: 0 γίνεται δεκτό Ο παραλήπτης δε βλέπει την πλευρά του αποστολέα. Ο παραλήπτης συμπεριφέρεται το ίδιο και στις 2 περιπτώσεις 0 1 2 3 0 1 2 0 1 2 3 0 1 2 0 1 2 3 0 1 2 Το πακέτο με Α/Α: 0 γίνεται δεκτό 30

Σημερινή διάλεξη Σύνοψη 6ης διάλεξης Επίπεδο μεταφοράς Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Go-Back-N Selective repeat Εισαγωγή TCP Δομή TCP segment Α/Α και ACKs στο TCP TCP Round Trip Time και Timeout Αξιόπιστη μεταφορά δεδομένων TCP Δημιουργία TCP ACK Γρήγορη επαναποστολή TCP Έλεγχος ροής Διαχείριση συνδέσεων Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 31

Εισαγωγή TCP RFC: 793,1122,1323, 2018, 2581 socket door Σημείο προς σημείο (point-topoint) 1 αποστολέας και 1 παραλήπτης Αξιόπιστη, παράδοση byte στη σωστή σειρά Δεν υπάρχουν όρια μηνυμάτων Pipelined Το μέγεθος παραθύρου καθορίζεται από το TCP congestion και flow control application writes data TCP send buffer segment application reads data TCP receive buffer socket door Full duplex δεδομένα Αμφίδρομη ροή δεδομένων στην ίδια σύνδεση MSS: μέγιστο μέγεθος segment Με σύνδεση (connectionoriented) Το handshaking (ανταλλαγή μηνυμάτων ελέγχου) αρχικοποιεί τις καταστάσεις του αποστολέα και του παραλήπτη πριν από την ανταλλαγή δεδομένων Έλεγχος ροής (flow control) Ο αποστολέας δεν θα κατακλύζει τον παραλήπτη 32

Δομή TCP segment URG: επείγοντa δεδομένα (γενικά δεν χρησιμ.) ACK: Αριθμός έγκυρου ACK PSH: Άμεση προώθηση δεδομένων (γενικά δεν χρησιμ.) RST, SYN, FIN: Εγκατάσταση σύνδεσης (εντολές εγκατάστασης, τερματισμού) Internet checksum (όπως στο UDP) 32 bits source port # dest port # head len sequence number acknowledgement number not used U A P R checksum S F Receive window Urg data pnter Επιλογές(variable length) Δεδομένα εφαρμογής (μεταβλητό μήκος) Μέτρηση με βάση τα bytes των δεδομένων (όχι τα segments!) Αριθμός bytes που ο παραλήπτης διατίθεται να παραλάβει 33

Σημερινή διάλεξη Σύνοψη 6ης διάλεξης Επίπεδο μεταφοράς Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Go-Back-N Selective repeat Εισαγωγή TCP Δομή TCP segment Α/Α και ACKs στο TCP TCP Round Trip Time και Timeout Αξιόπιστη μεταφορά δεδομένων TCP Δημιουργία TCP ACK Γρήγορη επαναποστολή TCP Έλεγχος ροής Διαχείριση συνδέσεων Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 34

Α/Α και ACKs στο TCP (1/2) Αύξοντες αριθμοί Αριθμός του byte stream του πρώτου byte στα δεδομένα του segment Acknowledgements Α/Α του επόμενου byte που αναμένεται από την άλλη πλευρά Συσσωρευτικό (cumulative) ACK source port # dest port # sequence number acknowledgement number rwnd checksum Απεστάλη με ACK urg pointer Μέγεθος παραθύρου N Εύρος Α/Α αποστολέα Απεστ., όχι ακόμα ACK source port # dest port # sequence number acknowledgement number rwnd A checksum Διαθέσιμο αλλά όχι ακόμα απεστ. urg pointer Μη διαθέσιμο 35

Α/Α και ACKs στο TCP (2/2) Κόμβος A Κόμβος B Ο χρήστης πληκτρολογεί C Ο κόμβος στέλνει ACK για τη λήψη του αναπαραχθέντος C Seq=42, ACK=79, data = C Seq=79, ACK=43, data = C Seq=43, ACK=80 Ο κόμβος στέλνει ACK για τη λήξη του C, αναπαράγει και στέλνει πίσω το C Απλό σενάριο telnet Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 36

Σημερινή διάλεξη Σύνοψη 6ης διάλεξης Επίπεδο μεταφοράς Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Go-Back-N Selective repeat Εισαγωγή TCP Δομή TCP segment Α/Α και ACKs στο TCP TCP Round Trip Time και Timeout Αξιόπιστη μεταφορά δεδομένων TCP Δημιουργία TCP ACK Γρήγορη επαναποστολή TCP Έλεγχος ροής Διαχείριση συνδέσεων Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 37

TCP Round Trip Time και Timeout (1/3) Ανάθεση τιμής στο TCP timeout Θα πρέπει να είναι μεγαλύτερο από το RTT Ναι, αλλά το RTT ποικίλλει Αν είναι πολύ μικρό προκύπτει πρόωρο timeout Δημιουργεί επαναποστολές που δεν είναι απαραίτητες Αν είναι πολύ μεγάλο Προκαλεί αργή και μικρή αντίδραση στην απώλεια segment Προσδιορισμός RTT Πρωτόκολλα Διαδικτύου, 7η Διάλεξη SampleRTT: ο χρόνος που μετρήθηκε από την αποστολή του segment ως την παραλαβή του ACK Αγνοεί segments που έχουν φτάσει με επαναποστολές Επειδή το SampleRTT ποικίλλει, απαιτείται ομαλότερος υπολογισμένος RTT Υπολογισμός του μέσου όρου από τις πρόσφατες μετρήσεις και όχι μόνο του τρέχοντος SampleRTT 38

RTT (milliseconds) RTT (milliseconds) TCP Round Trip Time και Timeout (2/3) EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT Μ.Ο. με εκθετικά βάρη (exponential weighted moving average) Η επίδραση των παλαιότερων δειγμάτων φθίνει εκθετικά Τυπική τιμή: α = 0.125 RTT: gaia.cs.umass.edu to fantasia.eurecom.fr 350 RTT: gaia.cs.umass.edu to fantasia.eurecom.fr 300 250 200 150 samplertt EstimatedRTT 100 1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106 time (seconnds) time (seconds) SampleRTT Estimated RTT 39

TCP Round Trip Time και Timeout (3/3) Ανάθεση τιμής στο timeout interval: EstimatedRTT συν περιθώριο ασφαλείας Μεγάλη μεταβλητότητα στο EstimatedRTT -> μεγαλύτερο περιθώριο ασφαλείας Υπολογισμός τυπικής απόκλισης του SampleRTT από το EstimatedRTT DevRTT = (1-)*DevRTT + * SampleRTT-EstimatedRTT (typically, = 0.25) Τίθεται η τιμή του χρονικού διαστήματος TimeoutInterval = EstimatedRTT + 4*DevRTT Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 40

Σημερινή διάλεξη Σύνοψη 6ης διάλεξης Επίπεδο μεταφοράς Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Go-Back-N Selective repeat Εισαγωγή TCP Δομή TCP segment Α/Α και ACKs στο TCP TCP Round Trip Time και Timeout Αξιόπιστη μεταφορά δεδομένων TCP Δημιουργία TCP ACK Γρήγορη επαναποστολή TCP Έλεγχος ροής Διαχείριση συνδέσεων Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 41

Αξιόπιστη μεταφορά δεδομένων TCP Το TCP δημιουργεί μια υπηρεσία αξιόπιστης μεταφοράς δεδομένων πάνω από το αναξιόπιστο IP Pipelined segments Συσσωρευτικά ACK Ένας χρονομέτρης επαναποστολής Η επαναποστολή προκαλείται από Γεγονότα timeout Επαναλαμβανόμενα ACK Αρχικά εξετάζουμε έναν απλοποιημένο αποστολέα Αγνοεί επαναλαμβανόμενα ACK Αγνοεί flow control, congestion control Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 42

Γεγονότα αποστολέα TCP Δεδομένα από την εφαρμογή Δημιουργία segment με Α/Α Ο Α/Α είναι ο αριθμός του πρώτου byte στο segment Εκκίνηση χρονομέτρου αν δεν εκτελείται ήδη Το χρονόμετρο αναφέρεται στο παλαιότερο segment χωρίς ACK Χρόνος λήξης: TimeOutInterval Timeout επαναποστολή segment που προκάλεσε το timeout Επανεκκίνηση timer ACK λήψης Ένα γίνεται ACK σε προηγούμενα μηνύματα που δεν είχαν γίνει ACK Ανανέωση όσων είναι γνωστό ότι έχουν γίνει ACK Εκκίνηση χρονομέτρου εάν υπάρχουν ακόμα segments χωρίς ACK 43

Aποστολέας TCP (απλοποιημένο σενάριο) L NextSeqNum = InitialSeqNum SendBase = InitialSeqNum wait for event ACK received, with ACK field value y data received from application above create segment, seq. #: NextSeqNum pass segment to IP (i.e., send ) NextSeqNum = NextSeqNum + length(data) if (timer currently not running) start timer timeout retransmit not-yet-acked segment with smallest seq. # start timer if (y > SendBase) { SendBase = y /* SendBase 1: last cumulatively ACKed byte */ if (there are currently not-yet-acked segments) start timer else stop timer } 44

timeout timeout TCP: Σενάρια επαναποστολής (1/2) Κόμβος A Κόμβος B Κόμβος A Κόμβος B Seq=92, 8 bytes δεδομένων SendBase=92 Seq=92, 8 bytes δεδομένων X ACK=100 Seq=100, 20 bytes δεδομένων ACK=100 ACK=120 Seq=92, 8 bytes δεδομένων ACK=100 SendBase=100 SendBase=120 SendBase=120 Seq=92, 8 bytes δεδομένων ACK=120 Σενάριο απώλειας ACK Πρόωρο timeout 45

timeout TCP: Σενάρια επαναποστολής (2/2) Κόμβος A Κόμβος B Seq=92, 8 bytes δεδομένων Seq=100, 20 bytes δεδομένων X ACK=100 ACK=120 Seq=120, 15 bytes δεδομένων Συσσωρευτικό (cumulative) ACK Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 46

Σημερινή διάλεξη Σύνοψη 6ης διάλεξης Επίπεδο μεταφοράς Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Go-Back-N Selective repeat Εισαγωγή TCP Δομή TCP segment Α/Α και ACKs στο TCP TCP Round Trip Time και Timeout Αξιόπιστη μεταφορά δεδομένων TCP Δημιουργία TCP ACK Γρήγορη επαναποστολή TCP Έλεγχος ροής Διαχείριση συνδέσεων Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 47

Δημιουργία TCP ACK Γεγονότα στον παραλήπτη Άφιξη segment σε σειρά με αναμενόμενο Α/Α. Όλα τα δεδομένα μέχρι το αναμενόμενο Α/Α έχουν ήδη γίνει ACK Άφιξη segment σε σειρά με αναμενόμενο Α/Α. Για ένα άλλο segment εκκρεμεί το ACK Ενέργειες στον παραλήπτη Καθυστέρηση ACK. Αναμονή μέχρι 500ms για το επόμενο segment. Εάν δεν φθάσει, αποστολή του ACK Άμεση αποστολή ενός συσσωρευτικού ACK, ώστε να γίνουν ACK και τα 2 segments που είναι στη σωστή σειρά Άφιξη segment εκτός σειράς με Α/Α μεγαλύτερο του αναμενομένου. Ανίχνευση κενού Άφιξη segment που γεμίζει το κενό μερικώς ή πλήρως Άμεση αποστολή επαναλαμβανόμενου (duplicate) ACK, υποδεικνύοντας τον Α/Α του επόμενου αναμενόμενου byte Άμεση αποστολή ACK εάν το segment Ξεκινάει στην αρχή του gap Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 48

Σημερινή διάλεξη Σύνοψη 6ης διάλεξης Επίπεδο μεταφοράς Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Go-Back-N Selective repeat Εισαγωγή TCP Δομή TCP segment Α/Α και ACKs στο TCP TCP Round Trip Time και Timeout Αξιόπιστη μεταφορά δεδομένων TCP Δημιουργία TCP ACK Γρήγορη επαναποστολή TCP Έλεγχος ροής Διαχείριση συνδέσεων Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 49

Γρήγορη επαναποστολή (fast retransmit) TCP (1/2) Συχνά ο χρόνος για το timeout είναι μεγάλος Προκαλείται μεγάλη καθυστέρηση πριν ξαναγίνει αποστολή του πακέτου που έχει χαθεί Ανίχνευση segments που έχουν χαθεί μέσω επαναλαμβανόμενων ACK Ο αποστολέας συχνά στέλνει πολλά segments διαρκώς Αν χαθεί κάποιο segment θα υπάρχουν πολλά επαναλαμβανόμενα ACKs TCP fast retransmit Εάν ο αποστολέας λάβει 3 ACK για τα ίδια δεδομένα (τριπλά επαναλαμβανόμενα ACK) ( triple duplicate ACKs ), ξαναστέλνει το segment χωρίς ACK με το μικρότερο Α/Α Πιθανότατα αυτό το segment είχε χαθεί οπότε δε χρειάζεται να περιμένει το timeout 50

timeout Γρήγορη επαναποστολή (fast retransmit) TCP (2/2) Κόμβος A Κόμβος B Seq=92, 8 bytes δεδομένων Seq=100, 20 bytes δεδομένων X ACK=100 ACK=100 ACK=100 ACK=100 Seq=100, 20 bytes of data Γρήγορη επαναποστολή αφού ο αποστολέας λάβει τριπλό επαναλαμβανόμενο ACK 51

Σημερινή διάλεξη Σύνοψη 6ης διάλεξης Επίπεδο μεταφοράς Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Go-Back-N Selective repeat Εισαγωγή TCP Δομή TCP segment Α/Α και ACKs στο TCP TCP Round Trip Time και Timeout Αξιόπιστη μεταφορά δεδομένων TCP Δημιουργία TCP ACK Γρήγορη επαναποστολή TCP Έλεγχος ροής Διαχείριση συνδέσεων Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 52

Έλεγχος ροής (flow control) TCP (1/2) Η εφαρμογή μπορεί να αφαιρεί δεδομένα από τους buffers του TCP socket. πιο αργά από ότι ο TCP αποστολέας παραδίδει (στέλνει ο αποστολέας) flow control Ο δέκτης ελέγχει τον αποστολέα ώστε ο αποστολέας να μην υπερχειλίσει το buffer του παραλήπτη στέλνοντας και πολλά δεδομένα και πολύ γρήγορα από τον αποστολέα διεργασία εφαρμογής Buffer TCP socket παραλήπτη TCP code IP code Εφαρμογή ΛΣ Στοίβα πρωτοκόλλου παραλήπτη 53

Έλεγχος ροής (flow control) TCP (2/2) Ο παραλήπτης δημοσιεύει ελεύθερο χώρο στο buffer συμπεριλαμβάνοντας την τιμή rwnd στο header TCP του segment παραλήπτη-προς-αποστολέα Το μέγεθος του RcvBuffer ορίζεται μέσω επιλογών του socket (default=4096 bytes) Πολλά ΛΣ αυτό-προσαρμόζουν το RcvBuffer Ο αποστολέας περιορίζει το μέγεθος των δεδομένων χωρίς ACK ( inflight ) μέσω της τιμής rwnd του παραλήπτη Εγγυάται ότι ο buffer του παραλήπτη δεν θα υπερχειλίσει RcvBuffer rwnd προς τις διεργασίες εφαρμογής buffered δεδομένα ελεύθερος χώρος buffer TCP segment payloads buffering στην πλευρά του παραλήπτη 54

Σημερινή διάλεξη Σύνοψη 6ης διάλεξης Επίπεδο μεταφοράς Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Go-Back-N Selective repeat Εισαγωγή TCP Δομή TCP segment Α/Α και ACKs στο TCP TCP Round Trip Time και Timeout Αξιόπιστη μεταφορά δεδομένων TCP Δημιουργία TCP ACK Γρήγορη επαναποστολή TCP Έλεγχος ροής Διαχείριση συνδέσεων Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 55

Διαχείριση συνδέσεων Πριν την ανταλλαγή δεδομένων, ο αποστολέα και ο παραλήπτης handshake : Συμφωνούν στην εγκαθίδρυση μια σύνδεσης (ο καθένας γνωρίζει την επιθυμία του άλλου για σύνδεση) Συμφωνούν στις παραμέτρους της σύνδεσης application application connection state: ESTAB connection variables: seq # client-to-server server-to-client rcvbuffer size at server,client network connection state: ESTAB connection Variables: seq # client-to-server server-to-client rcvbuffer size at server,client network Socket clientsocket = newsocket("hostname","port number"); Socket connectionsocket = welcomesocket.accept(); 56

Συμφωνία εγκαθίδρυσης σύνδεσης (1/2) 2-way handshake: Let s talk ESTAB OK choose x req_conn(x) ESTAB acc_conn(x) ESTAB ESTAB Το 2-way handshake δεν λειτουργεί πάντα! Καθυστερήσεις μεταβλητών Επαναποστολές μηνυμάτων λόγων απωλειών Αλλαγή σειράς μηνυμάτων Έλλειψη οπτικής της άλλης πλευράς Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 57

Συμφωνία εγκαθίδρυσης σύνδεσης (2/2) Σενάρια αποτυχίας 2-way handshake: επιλογή x επαναποστολή req_conn(x) req_conn(x) acc_conn(x) ESTAB επιλογή x επαναποστολή req_conn(x) req_conn(x) acc_conn(x) ESTAB ESTAB τερματισμός client req_conn(x) ολοκλήρωση σύνδεσης x Ο server ξεχνάει τη x ESTAB επαναποστολή δεδομένων (x+1) τερματισμός client δεδ. (x+1) ολοκλήρωση σύνδεσης x req_conn(x) αποδοχή δεδ. (x+1) Ο server ξεχνάει τη x Μισο-ανοιχτή σύνδεση! (χωρίς client!) ESTAB δεδομένα(x+1) ESTAB αποδοχή δεδ. (x+1)

TCP 3-way handshake Κατάσταση client Ακούει επιλογή αρχ. Α/Α, x αποστολή TCP SYN msg Αποστολή SYN λήψη SYNACK(x) ESTAB δείχνει ότι ο server είναι live; αποστολή ACK για το SYNACK; το segment μπορεί να λαμβάνει δεδομένα client-προς-server SYNbit=1, Seq=x SYNbit=1, Seq=y ACKbit=1; ACKnum=x+1 ACKbit=1, ACKnum=y+1 επιλογή αρχ. Α/Α, y αποστολή TCP SYNACK μην., ACK για το SYN Κατάσταση server λήψη ACK(y) δείχνει ότι ο client είναι live Ακούει Λήψη SYN ESTAB Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 59

TCP 3-way handshake: FSM closed Socket connectionsocket = welcomesocket.accept(); SYN(x) SYNACK(seq=y,ACKnum=x+1) δημιουργία νέου socket για επικοινωνία πίσω προς το client L listen Socket clientsocket = newsocket("hostname","port number"); SYN(seq=x) SYN rcvd SYN sent ACK(ACKnum=y+1) L ESTAB SYNACK(seq=y,ACKnum=x+1) ACK(ACKnum=y+1) 60

Κλείσιμο σύνδεσης TCP (1/2) Ο client και server κλείνουν ο καθένας τη σύνδεση Αποστολή TCP segment με FIN bit = 1 Απόκριση στο ληφθέν FIN με ACK Στο ληφθέν FIN, το ACK μπορεί να συνδυαστεί με το «δικό του» FIN Πολλαπλές ταυτόχρονες ανταλλαγές FIN μπορούν να διαχειριστούν Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 61

Κλείσιμο σύνδεσης TCP (2/2) Κατάσταση client ESTAB FIN_WAIT_1 FIN_WAIT_2 TIMED_WAIT clientsocket.close() Δεν μπορεί να στέλνει αλλά μπορεί να λαμβάνει Περιμένει το server να «κλείσει» Αναμονή χρόνου για 2*μέγιστο χρόνου ζωής segment FINbit=1, seq=x ACKbit=1; ACKnum=x+1 FINbit=1, seq=y ACKbit=1; ACKnum=y+1 Μπορεί ακόμα να στέλνει δεδομένα Δεν μπορεί να στέλνει δεδομένα Κατάσταση server ESTAB CLOSE_WAIT LAST_ACK CLOSED CLOSED Πρωτόκολλα Διαδικτύου, 7η Διάλεξη 62