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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Network Address Translation (NAT)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Επαναληπτικό µάθηµα επί των αρχών λειτουργίας του ιαδικτύου. ρ. Κωνσταντίνος Σ. Χειλάς. Ethernet

Δίκτυα Υπολογιστών. Δίκτυα υπολογιστών και το Διαδίκτυο Εισαγωγή. Κ. Βασιλάκης

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

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

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

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

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

How do loss and delay occur?

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

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

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

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

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

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

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

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

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

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Γ Τάξη ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΑ.Λ. ΤΕΤΡΑΔΙΟ ΜΑΘΗΤΗ Κωνσταντοπούλου Μ., Χρυσοστόμου Γ.

Παραδείγµατα δικτυακών τεχνολογιών. Ethernet Internet ATM

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

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

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

Επικοινωνία. Χάρης Μανιφάβας Τμήμα Εφ. Πληροφορικής & Πολυμέσων ΤΕΙ Κρήτης. Κατανεμημένα Συστήματα (E) Επικοινωνία 1

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

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

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

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

Άσκηση Διάλεξης 5. Router. Δεδομένα: Οι ζεύξεις ειναι τεχνολογίας ενσύρματου Ethernet των 10 Mbps και 100 Mbps αντίστοιχα.

Δίκτυα Υπολογιστών. Δίκτυα υπολογιστών και το Διαδίκτυο Εισαγωγή. Κ. Βασιλάκης

Χρήστος Ξενάκης Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιά

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

Επίπεδο δικτύου IP διευθυνσιοδότηση

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

ίκτυα - Internet Μάθηµα 3ο Ενότητα Β: Το Πρότυπο ΤCP/IP Eισαγωγή - Επικοινωνία µεταξύ δύο Υπολογιστών Παρασκευή 10 NOE 2006 ιευθύνσεις

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

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

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

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

14. Δικτύωση με Java Δικτύωση με Java Sockets Δημιουργία της σύνδεσης Διευθυνσιοδότηση της σύνδεσης

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

Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals

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

Διαδίκτυα και το Διαδίκτυο (Internetworking and the Internet)

Κινητές Επικοινωνίες & Τηλεπικοινωνιακά Δίκτυα

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

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

Transcript:

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

Σημερινή διάλεξη Σύνοψη 5ης διάλεξης Επίπεδο μεταφοράς Υπηρεσίες και πρωτόκολλα επιπέδου μεταφοράς Επίπεδο μεταφοράς vs. Δικτύου Πρωτόκολλα μεταφοράς διαδικτύου (Internet) Multiplexing/demultiplexing Demultiplexing χωρίς σύνδεση Demultiplexing με σύνδεση UDP UDP Checksum Αξιόπιστη μεταφορά δεδομένων Αξιόπιστο κανάλι Κανάλι με σφάλματα Αλλοιωμένα ACK/NAK NAK-free Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 2

Distributed Hash Table (DHT) Κατανομή ζευγαριών (key, value) σε εκατομμύρια peers Τα ζευγάρια κατανέμονται εξίσου στους peers Κάθε peer μπορεί να αναζητήσει (query) τη βάση για κάποιο key Η βάση δεδομένων επιστρέφει το value για αυτό το key Για την επίλυση του ερωτήματος, μικρός αριθμός μηνυμάτων ανταλλάσσεται μεταξύ των peers Κάθε peer γνωρίζει μόνο για ένα μικρό αριθμό άλλων peers Ιδανικό για peers που (απο-) συνδέονται Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 3

Ανάθεση ζευγαριών key-value σε peers Κανόνας: ανάθεση ζευγαριού key-value στον peer που έχει το κοντινότερο (closest) ID Κοντινότερο είναι ο πρώτος (άμεσος) διάδοχος (immediate successor) του key Π.χ. ID στο εύρος {0,1,2,3,,63} Έστω 8 peers: 1,12,13,25,32,40,48,60 Για key = 51, ανάθεση στον peer 60 Για key = 60, ανάθεση στον peer 60 Για key = 61, ανάθεση στον peer 1 Πώς θα καθορίζεται όμως o «κοντινότερος» peer? Μπορεί ο κάθε peer να διατηρεί πληροφορία αναφορικά με όλους τους peers Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 4

Κυκλικό DHT με συντομεύσεις 60 value 1 12 Ποιο είναι το value για το κλειδί 53? 48 40 32 Κάθε peer έχει πληροφορία για τις διευθύνσεις IP των διαδόχων, προκατόχων και συντομεύσεων του Μείωση μηνυμάτων από 6 σε 3 Είναι πιθανός ο ορισμός συντομεύσεων για με O(log N) γείτονες, O(log N) μηνύματα 25 13 5

Προγραμματισμός sockets με UDP UDP: Χωρίς σύνδεση μεταξύ client & server Δεν υπάρχει διαδικασία handshaking πριν την αποστολή δεδομένων Ο αποστολέας επισυνάπτει τη διεύθυνση IP και τον αριθμό του port του παραλήπτη σε κάθε πακέτο Ο παραλήπτης εξάγει τη διεύθυνση IP και τον αριθμό του port από το πακέτο που λαμβάνει Οπτική από την εφαρμογή Το UDP παρέχει ένα μη αξιόπιστο τρόπο μεταφοράς ομάδων δεδομένων (groups) bytes ( datagrams ) μεταξύ του client και του server Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 6

Αλληλεπίδραση client/server socket με UDP server (εκτελείται στο serverip) Δημιουργία socket, port= x: serversocket = socket(af_inet,sock_dgram) Ανάγνωση UDP segment από serversocket client Δηγμιουργία socket: clientsocket = socket(af_inet,sock_dgram) Δημιουργία datagram με server IP και port=x; αποστολή datagram μέσω clientsocket Απάντηση στο serversocket δηλώνοντας τη διεύθυνση του client, αριθμό port Ανάγνωση datagram από clientsocket Κλείσιμο clientsocket 7

Προγραμματισμός sockets με TCP Ο client πρέπει να επικοινωνήσει με το server Το server process πρέπει ήδη να εκτελείται Ο server πρέπει να έχει ήδη δημιουργήσει μια πόρτα που θα περιμένει / καλωσορίσει την επικοινωνία του client Ο client επικοινωνεί με το server Δημιουργώντας ένα TCP socket, καθορίζοντας τη διεύθυνση IP, και το port του server process Όταν ο client δημιουργήσει το socket Το client TCP δημιουργεί τη σύνδεση με το server TCP Όταν λάβει κάποια επικοινωνία από το client, ο server TCP δημιουργεί ένα νέο socket ώστε το server process να επικοινωνήσει με το συγκεκριμένο client Επιτρέπει στο server να επικοινωνεί με πολλαπλούς clients Οι αριθμοί των port χρησιμοποιούνται για να διαφοροποιούνται οι clients Οπτική από την εφαρμογή To TCP παρέχει αξιόπιστη, σε σειρά μεταφορά ροής δεδομένων (byte-stream) μεταξύ 8 client και server

Αλληλεπίδραση client/server socket με TCP server (εκτελείται στο serverip) Δημιουργία socket, port=x, για την εισερχόμενη αίτηση: serversocket = socket() client Αναμονή εισερχόμενης αίτησης σύνδεσης connectionsocket = serversocket.accept() Ανάγνωση αίτησης από connectionsocket Απάντηση σε connectionsocket Κλείσιμο connectionsocket TCP Δημιουργία σύνδεσης Δημιουργία socket, σύνδεση στο serverip, port=x clientsocket = socket() Αποστολή αίτησης με χρήση του clientsocket Ανάγνωση απάντησης από clientsocket Κλείσιμο clientsocket 9

Σημερινή διάλεξη Σύνοψη 5ης διάλεξης Επίπεδο μεταφοράς Υπηρεσίες και πρωτόκολλα επιπέδου μεταφοράς Επίπεδο μεταφοράς vs. Δικτύου Πρωτόκολλα μεταφοράς διαδικτύου (Internet) Multiplexing/demultiplexing Demultiplexing χωρίς σύνδεση Demultiplexing με σύνδεση UDP UDP Checksum Αξιόπιστη μεταφορά δεδομένων Αξιόπιστο κανάλι Κανάλι με σφάλματα Αλλοιωμένα ACK/NAK NAK-free Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 10

Υπηρεσίες και πρωτόκολλα επιπέδου μεταφοράς Παρέχουν επικοινωνία με τη μορφή λογικής σύνδεσης μεταξύ των διεργασιών που δημιουργούν οι εφαρμογές που τρέχουν σε διαφορετικούς hosts Τα πρωτόκολλα μεταφοράς τρέχουν σε τερματικά συστήματα Αποστέλλουσα πλευρά: Χωρίζει τα μηνύματα της εφαρμογής σε τμήματα (segments) και τα προωθεί στο επίπεδο δικτύου Λαμβάνουσα πλευρά: Επανασυναρμολογεί τα segments μηνύματα και τα προωθεί στο επίπεδο εφαρμογών Πάνω από πρωτόκολλα μεταφοράς διαθέσιμα στις εφαρμογές Internet: TCP και UDP application transport network data link physical application transport network data link physical 11

Επίπεδο μεταφοράς vs. δικτύου Επίπεδο δικτύου Επικοινωνία μεταξύ hosts Επίπεδο μεταφοράς Λογική επικοινωνία μεταξύ διεργασιών Βασίζεται και επεκτείνει τις υπηρεσίες επιπέδου δικτύου Ανάλογα με το πρωτόκολλο θα «προσφέρει» κάποιου είδους «εγγυήσεις» για τη ροή των πακέτων που στέλνονται μεταξύ δύο διεργασιών μέσω δικτύου Αναλογία νοικοκυριού 12 παιδία στο σπίτι της Ann στέλνουν γράμματα σε 12 παιδιά στο σπίτι του Bill hosts = σπίτια processes = παιδιά app messages = γράμματα σε φακέλους transport protocol = Ann και Bill σε δωμάτια του σπιτιού network-layer protocol = ΕΛΤΑ Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 12

Πρωτόκολλα μεταφοράς διαδικτύου (Internet) UDP: Αναξιόπιστη, χωρίς εγγύηση στη σειρά παράδοσης των πακέτων Δεν βελτιώνει τον best-effort χαρακτήρα του IP!!!! TCP: Αξιόπιστη, με εγγύηση στη σειρά παράδοσης των πακέτων Έλεγχος συμφόρησης Έλεγχος ροής Εγκαθίδρυση σύνδεσης Προσοχή: Το διαδίκτυο ΔΕΝ δίνει εγγυήσεις καθυστέρησης ή bandwidth! Είναι 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 13

Επίπεδο μεταφοράς: Πρόσθετα στοιχεία Πακέτα = segments TCP = segment UDP = datagram Οι routers δεν υλοποιούν πρωτόκολλα επιπέδου μεταφοράς Δρουν στα πεδία δικτύου (network fields) του πακέτου (datagram) χωρίς να εξετάζουν τα πεδία του επιπέδου μεταφοράς Επέκταση μεταφοράς δεδομένων μεταξύ κόμβων σε μεταφορά δεδομένων μεταξύ διεργασιών Multiplexing Demultiplexing Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 14

Σημερινή διάλεξη Σύνοψη 5ης διάλεξης Επίπεδο μεταφοράς Υπηρεσίες και πρωτόκολλα επιπέδου μεταφοράς Επίπεδο μεταφοράς vs. Δικτύου Πρωτόκολλα μεταφοράς διαδικτύου (Internet) Multiplexing/demultiplexing Demultiplexing χωρίς σύνδεση Demultiplexing με σύνδεση UDP UDP Checksum Αξιόπιστη μεταφορά δεδομένων Αξιόπιστο κανάλι Κανάλι με σφάλματα Αλλοιωμένα ACK/NAK NAK-free Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 15

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

Πως λειτουργεί το demultiplexing Ο host λαμβάνει IP datagrams Κάθε datagram έχει τη διεύθυνση IP της πηγής / αποστολέα (source) και του προορισμού / παραλήπτη (destination) Κάθε datagram μεταφέρει 1 segment επιπέδου μεταφοράς Κάθε segment έχει τον αριθμό θύρας (port) της πηγής και του προορισμού Ο host χρησιμοποιεί διευθύνσεις IP και αριθμό θύρας (port) ώστε να κατευθύνει τα segment στο 32 bits source port # dest port # Άλλα πεδία header Δεδομένα εφαρμογής (payload) Μορφή TCP/UDP segment κατάλληλο socket 17

Σημερινή διάλεξη Σύνοψη 5ης διάλεξης Επίπεδο μεταφοράς Υπηρεσίες και πρωτόκολλα επιπέδου μεταφοράς Επίπεδο μεταφοράς vs. Δικτύου Πρωτόκολλα μεταφοράς διαδικτύου (Internet) Multiplexing/demultiplexing Demultiplexing χωρίς σύνδεση Demultiplexing με σύνδεση UDP UDP Checksum Αξιόπιστη μεταφορά δεδομένων Αξιόπιστο κανάλι Κανάλι με σφάλματα Αλλοιωμένα ACK/NAK NAK-free Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 18

Demultiplexing χωρίς σύνδεση (connectionless) Υπενθύμιση: Το socket έχει τον αριθμό του port του host: DatagramSocket mysocket1 = new DatagramSocket(12534); Όταν ο κόμβος λαμβάνει το UDP segment Ελέγχει τον αριθμό του port του παραλήπτη στο segment Οδηγεί το UDP segment στο socket με αυτό τον αριθμό port Υπενθύμιση: Κατά τη δημιουργία του datagram για την αποστολή σε ένα UDP socket, πρέπει να καθοριστεί Η διεύθυνση IP του προορισμού Ο αριθμός του port του προορισμού Τα IP datagrams με τον ίδιο αριθμό port προορισμού, αλλά με διαφορετικές IP διευθύνσεις αποστολής ή / και αριθμούς port αποστολής θα οδηγηθούν στο ίδιο socket στον 19 προορισμό

Demultiplexing χωρίς σύνδεση: Παράδειγμα DatagramSocket mysocket2 = new DatagramSocket (9157); application transport network link P3 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:? Το port αποστολής παρέχει διεύθυνση επιστροφής 20

Σημερινή διάλεξη Σύνοψη 5ης διάλεξης Επίπεδο μεταφοράς Υπηρεσίες και πρωτόκολλα επιπέδου μεταφοράς Επίπεδο μεταφοράς vs. Δικτύου Πρωτόκολλα μεταφοράς διαδικτύου (Internet) Multiplexing/demultiplexing Demultiplexing χωρίς σύνδεση Demultiplexing με σύνδεση UDP UDP Checksum Αξιόπιστη μεταφορά δεδομένων Αξιόπιστο κανάλι Κανάλι με σφάλματα Αλλοιωμένα ACK/NAK NAK-free Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 21

Demultiplexing με σύνδεση (connection-oriented) Το TCP socket χαρακτηρίζεται από 4 πεδία: Διεύθυνση IP αποστολής (source IP address) Αριθμό port αποστολής (source port number) Διεύθυνση IP προορισμού (destination IP address) Αριθμό port προορισμού (destination port number) demux: Ο παραλήπτης χρησιμοποιεί και τα 4 πεδία για να προωθήσει το segment στο κατάλληλο socket Ενας server host μπορεί να υποστηρίξει πολλαπλά TCP sockets ταυτόχρονα Κάθε socket χαρακτηρίζεται από τη δική του 4-άδα Οι Web servers έχουν διαφορετικά sockets για κάθε client που συνδέεται Οι non-persistent HTTP έχουν διαφορετικά sockets για κάθε αίτημα Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 22

Demultiplexing με σύνδεση: Παράδειγμα (1/2) 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 3 segments, όλα με προορισμό τη διεύθυνση IP: B, port προορισμού: 80 είναι demultiplexed σε διαφορετικά sockets source IP,port: C,5775 dest IP,port: B,80 source IP,port: C,9157 dest IP,port: B,80 host: IP address C 23

Demultiplexing με σύνδεση: Παράδειγμα (2/2) application P3 transport network link physical application P4 transport network link physical threaded server server: IP address B application P2 transport network link physical P3 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 source IP,port: C,9157 dest IP,port: B,80 host: IP address C Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 24

Σημερινή διάλεξη Σύνοψη 5ης διάλεξης Επίπεδο μεταφοράς Υπηρεσίες και πρωτόκολλα επιπέδου μεταφοράς Επίπεδο μεταφοράς vs. Δικτύου Πρωτόκολλα μεταφοράς διαδικτύου (Internet) Multiplexing/demultiplexing Demultiplexing χωρίς σύνδεση Demultiplexing με σύνδεση UDP UDP Checksum Αξιόπιστη μεταφορά δεδομένων Αξιόπιστο κανάλι Κανάλι με σφάλματα Αλλοιωμένα ACK/NAK NAK-free Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 25

UDP: User Datagram Protocol [RFC 768] Μινιμαλιστικό πρωτόκολλο μεταφοράς του Διαδικτύου Υπηρεσία καλύτερης δυνατής προσπάθειας (best-effort service), τα UDP segments μπορεί να χαθούν ληφθούν από την εφαρμογή με λάθος σειρά Χωρίς σύνδεση (connectionless) Δεν γίνεται handshaking μεταξύ UDP sender και receiver Κάθε UDP segment το χειρίζεται το UDP ανεξάρτητα από τα άλλα Χρησιμότητα του UDP Δεν χρειάζεται να προηγηθεί εγκατάσταση σύνδεσης (που προσθέτει καθυστέρηση) Μικρή επικεφαλίδα segment Δεν παρέχει έλεγχο συμφόρησης: το UDP μπορεί να στείλει δεδομένα όσο γρήγορα μπορεί Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 26

UDP Segment source port # dest port # length 32 bits Δεδομένα εφαρμογής (payload) checksum Μορφή UDP segment Μήκος, σε bytes του UDP segment, μαζί με την επικεφαλίδα Χρήση UDP Εφαρμογές Streaming multimedia apps DNS SNMP Αξιόπιστη μεταφορά με UDP Προσθήκη τεχνικών στο επίπεδο εφαρμογής Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 27

Σημερινή διάλεξη Σύνοψη 5ης διάλεξης Επίπεδο μεταφοράς Υπηρεσίες και πρωτόκολλα επιπέδου μεταφοράς Επίπεδο μεταφοράς vs. Δικτύου Πρωτόκολλα μεταφοράς διαδικτύου (Internet) Multiplexing/demultiplexing Demultiplexing χωρίς σύνδεση Demultiplexing με σύνδεση UDP UDP Checksum Αξιόπιστη μεταφορά δεδομένων Αξιόπιστο κανάλι Κανάλι με σφάλματα Αλλοιωμένα ACK/NAK NAK-free Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 28

UDP checksum Στόχος: Ανίχνευση λαθών (π.χ. αντεστραμμένα bits) στο μεταδιδόμενο segment λόγω θορύβου και παρεμβολών στη σύνδεση ή προβλημάτων στους δρομολογητές Αναγκαιότητα: Παρότι τα χαμηλότερα επίπεδα έχουν τεχνικές για ανίχνευση λαθών γίνεται από το UDP γιατί δεν υπάρχει εγγύηση ότι όλες οι συνδέσεις (links) μεταξύ αποστολέα & παραλήπτη χρησιμοποιούν πρωτόκολλο ανίχνευσης λάθους Αποστολέας Χειρίζεται τα περιεχόμενα του segment (συμπεριλαμβανομένων των πεδίων του header) ως ακολουθία ακεραίων 16-bit Checksum: συμπλήρωμα ως προς 1 του αθροίσματος των περιεχομένων του segment Τοποθετεί την τιμή του checksum στο πεδίο checksum του UDP Παραλήπτης Υπολογίζει το checksum του λαμβανόμενου segment Ελέγχει εάν η υπολογισθείσα τιμή του checksum ισούται με την τιμή στο πεδίο checksum NO ανίχνευση λάθους YES καμία ανίχνευση σφάλματος 29

Παράδειγμα Internet checksum Παράδειγμα: πρόσθεση δύο ακεραίων 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 Σημείωση: Όταν προσθέτουμε αριθμούς ένα κρατούμενο από το πιο σημαντικό bit πρέπει να προστεθεί στο αποτέλεσμα Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 30

Σημερινή διάλεξη Σύνοψη 5ης διάλεξης Επίπεδο μεταφοράς Υπηρεσίες και πρωτόκολλα επιπέδου μεταφοράς Επίπεδο μεταφοράς vs. Δικτύου Πρωτόκολλα μεταφοράς διαδικτύου (Internet) Multiplexing/demultiplexing Demultiplexing χωρίς σύνδεση Demultiplexing με σύνδεση UDP UDP Checksum Αξιόπιστη μεταφορά δεδομένων Αξιόπιστο κανάλι Κανάλι με σφάλματα Αλλοιωμένα ACK/NAK NAK-free Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 31

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

Αξιόπιστη μεταφορά δεδομένων (1/2) rdt_send(): καλείται από επάνω (π.χ. εφαρμογή). Μεταφορά δεδομένων προς αποστολή deliver_data(): καλείται από το rdt για τη παράδοση δεδομένων προς τα επάνω Αποστέλλουσα πλευρά Λαμβάνουσα πλευρά udt_send(): καλείται από το rdt για τη μεταφορά πακέτου μέσω του αναξιόπιστου καναλιού rdt_rcv(): καλείται όταν ένα πακέτο φθάνει στο rcv-side του καναλιού

Αξιόπιστη μεταφορά δεδομένων (2/2) Περιοδική ανάπτυξη της αποστέλλουσας και λαμβάνουσας πλευράς του πρωτοκόλλου reliable data transfer protocol (rdt) Θεωρώντας μια κατεύθυνση δεδομένων Χρήση finite state machines (FSM) για την περιγραφή του αποστολέα και του παραλήπτη State (κατάσταση): Όταν σε κάποια «κατάσταση» η επόμενη καθορίζεται από κάποιο γεγονός (event) Λ: Καμία ενέργεια για κάποιο γεγονός ή κανένα γεγονός αλλά κάποια ενέργεια Γεγονός (event) που προκαλεί αλλαγή κατάστασης (state transition) Ενέργειες (actions) που γίνονται όταν υπάρχει αλλαγή κατάστασης state 1 event actions state 2 Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 34

Σημερινή διάλεξη Σύνοψη 5ης διάλεξης Επίπεδο μεταφοράς Υπηρεσίες και πρωτόκολλα επιπέδου μεταφοράς Επίπεδο μεταφοράς vs. Δικτύου Πρωτόκολλα μεταφοράς διαδικτύου (Internet) Multiplexing/demultiplexing Demultiplexing χωρίς σύνδεση Demultiplexing με σύνδεση UDP UDP Checksum Αξιόπιστη μεταφορά δεδομένων Αξιόπιστο κανάλι Κανάλι με σφάλματα Αλλοιωμένα ACK/NAK NAK-free Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 35

rdt1.0: Αξιόπιστη μεταφορά δεδομένων σε αξιόπιστο κανάλι Το κανάλι είναι απολύτως αξιόπιστο Δεν υπάρχουν σφάλματα (errors) σε bit Δεν υπάρχει απώλεια πακέτων (loss of packets) Διαφορετικά FSM για τον αποστολέα και τον παραλήπτη Ο αποστολέας στέλνει δεδομένα στο κανάλι Ο παραλήπτης διαβάζει τα δεδομένα από το κανάλι Δεν χρειάζεται ο παραλήπτης να ενημερώσει τον αποστολέαγια χαμηλότερο ρυθμό μετάδοσης δεδομένων Wait for call from above rdt_send(data) packet = make_pkt(data) udt_send(packet) Αποστολέας Wait for call from below rdt_rcv(packet) extract (packet,data) deliver_data(data) Παραλήπτης Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 36

Σημερινή διάλεξη Σύνοψη 5ης διάλεξης Επίπεδο μεταφοράς Υπηρεσίες και πρωτόκολλα επιπέδου μεταφοράς Επίπεδο μεταφοράς vs. Δικτύου Πρωτόκολλα μεταφοράς διαδικτύου (Internet) Multiplexing/demultiplexing Demultiplexing χωρίς σύνδεση Demultiplexing με σύνδεση UDP UDP Checksum Αξιόπιστη μεταφορά δεδομένων Αξιόπιστο κανάλι Κανάλι με σφάλματα Αλλοιωμένα ACK/NAK NAK-free Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 37

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

rdt2.0: FSM Αποστολέας rdt_send(data) sndpkt = 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η Διάλεξη 39

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η Διάλεξη 40

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η Διάλεξη 41

Σημερινή διάλεξη Σύνοψη 5ης διάλεξης Επίπεδο μεταφοράς Υπηρεσίες και πρωτόκολλα επιπέδου μεταφοράς Επίπεδο μεταφοράς vs. Δικτύου Πρωτόκολλα μεταφοράς διαδικτύου (Internet) Multiplexing/demultiplexing Demultiplexing χωρίς σύνδεση Demultiplexing με σύνδεση UDP UDP Checksum Αξιόπιστη μεταφορά δεδομένων Αξιόπιστο κανάλι Κανάλι με σφάλματα Αλλοιωμένα ACK/NAK NAK-free Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 42

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

rdt2.1 - Αποστολέας: Διαχείριση αλλοιωμένων ACK/NAK rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt) L rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) isnak(rcvpkt) ) udt_send(sndpkt) rdt_send(data) sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) Wait for call 0 from above Wait for ACK or NAK 1 rdt_send(data) Wait for ACK or NAK 0 Wait for call 1 from above rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) isnak(rcvpkt) ) udt_send(sndpkt) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt) sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt) L Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 44

rdt2.1 - Παραλήπτης: Διαχείριση αλλοιωμένων ACK/NAK rdt_rcv(rcvpkt) && (corrupt(rcvpkt) sndpkt = make_pkt(nak, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq1(rcvpkt) sndpkt = make_pkt(ack, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq0(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ack, chksum) udt_send(sndpkt) Wait for 0 from below Wait for 1 from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ack, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && (corrupt(rcvpkt) sndpkt = make_pkt(nak, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq0(rcvpkt) sndpkt = make_pkt(ack, chksum) udt_send(sndpkt) 45

rdt2.1: Σύνοψη Αποστολέας Προσθέτει αύξοντα αριθμό στο πακέτο Έλεγχος για εσφαλμένα ACK/NAK Διπλάσιος αριθμός καταστάσεων Κάθε κατάσταση πρέπει να θυμάται αν το αναμενόμενο πακέτο πρέπει να έχει Α/Α 0 ή 1 Παραλήπτης Πρέπει να ελέγχει αν το λαμβανόμενο πακέτο είναι επαναλαμβανόμενο Η κατάσταση υποδεικνύει αν το αναμενόμενο πακέτο έχει Α/Α 0 ή 1 Ο παραλήπτης δε γνωρίζει αν το τελευταίο του ACK/NAK έφθασε σωστά στον αποστολέα Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 46

Σημερινή διάλεξη Σύνοψη 5ης διάλεξης Επίπεδο μεταφοράς Υπηρεσίες και πρωτόκολλα επιπέδου μεταφοράς Επίπεδο μεταφοράς vs. Δικτύου Πρωτόκολλα μεταφοράς διαδικτύου (Internet) Multiplexing/demultiplexing Demultiplexing χωρίς σύνδεση Demultiplexing με σύνδεση UDP UDP Checksum Αξιόπιστη μεταφορά δεδομένων Αξιόπιστο κανάλι Κανάλι με σφάλματα Αλλοιωμένα ACK/NAK NAK-free Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 47

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

rdt2.2: Τμήματα FSM αποστολέα και παραλήπτη rdt_rcv(rcvpkt) && (corrupt(rcvpkt) has_seq1(rcvpkt)) udt_send(sndpkt) rdt_send(data) sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) Wait for call 0 from above Wait for 0 from below Wait for ACK 0 FSM αποστολέα FSM παραλήπτη rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) isack(rcvpkt,1) ) udt_send(sndpkt) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt,0) L rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ack1, chksum) udt_send(sndpkt) 49

Σημερινή διάλεξη Σύνοψη 5ης διάλεξης Επίπεδο μεταφοράς Υπηρεσίες και πρωτόκολλα επιπέδου μεταφοράς Επίπεδο μεταφοράς vs. Δικτύου Πρωτόκολλα μεταφοράς διαδικτύου (Internet) Multiplexing/demultiplexing Demultiplexing χωρίς σύνδεση Demultiplexing με σύνδεση UDP UDP Checksum Αξιόπιστη μεταφορά δεδομένων Αξιόπιστο κανάλι Κανάλι με σφάλματα Αλλοιωμένα ACK/NAK NAK-free Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 50

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

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 52

Εφαρμογή 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 Με απώλειες πακέτων 53

Εφαρμογή 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 πρωτόκολλο περιορίζει τη χρήση των φυσικών πόρων! 55

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 Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 56

Σημερινή διάλεξη Σύνοψη 5ης διάλεξης Επίπεδο μεταφοράς Υπηρεσίες και πρωτόκολλα επιπέδου μεταφοράς Επίπεδο μεταφοράς vs. Δικτύου Πρωτόκολλα μεταφοράς διαδικτύου (Internet) Multiplexing/demultiplexing Demultiplexing χωρίς σύνδεση Demultiplexing με σύνδεση UDP UDP Checksum Αξιόπιστη μεταφορά δεδομένων Αξιόπιστο κανάλι Κανάλι με σφάλματα Αλλοιωμένα ACK/NAK NAK-free Κανάλι με σφάλματα και απώλειες Πρωτόκολλα pipelined Πρωτόκολλα Διαδικτύου, 6η Διάλεξη 57

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

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 59

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