460 likes | 531 Views
Μαρία Παπαδοπούλη Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Χειμερινό εξάμηνο 2008-2009 Κεφάλαι a 3.1, 3.2, 3.3, 3.5 των Kurose/Ross. Επίπεδ o Μεταφοράς. ΗΥ335. Αρχές πίσω από τις υπηρεσίες του επιπέδου μεταφοράς : Πολύπλεξη/αποπολύπλεξη Αξιόπιστη μεταφορά δεδομένων
E N D
Μαρία Παπαδοπούλη Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Χειμερινό εξάμηνο 2008-2009 Κεφάλαιa 3.1, 3.2, 3.3, 3.5 των Kurose/Ross Επίπεδo Μεταφοράς ΗΥ335 Επίπεδο μεταφοράς
Αρχές πίσω από τις υπηρεσίες του επιπέδου μεταφοράς: Πολύπλεξη/αποπολύπλεξη Αξιόπιστη μεταφορά δεδομένων Έλεγχος ροής (flow control) Έλεγχος συμφόρησης (congestion control) Πρωτόκολλα επιπέδου μεταφοράς στο Internet: UDP: ασυνδεσιστρεφής μεταφορά TCP: συνδεσιστρεφής μεταφορά TCP έλεγχος συμφόρησης Κεφ. 3: Επίπεδο μεταφοράς Στόχος μας είναι η κατανόηση των: Επίπεδο μεταφοράς
παρέχουνλογική επικοινωνίαμεταξύ εφαρμογών που τρέχουν σε διαφορετικούς hosts Πρωτόκολλα μεταφοράς τρέχουν σετερματικά συστήματα Αποστέλλουσα πλευρά: Σπάει τα μηνύματα της εφαρμογής σε τμήματα (segments) και τα προωθεί στο επίπεδο δικτύου Λαμβάνουσα πλευρά: Επανασυναρμολογεί τα segments μηνύματα και τα προωθεί στο επίπεδο εφαρμογών Πάνω από ένα πρωτόκολλα μεταφοράς διαθέσιμα στις εφαρμογές Internet: TCP & UDP application transport network data link physical 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 logical end-end transport Υπηρεσίεςκαι πρώτόκολλα επιπέδου μεταφοράς Επίπεδο μεταφοράς
Επίπεδο δικτύου : (λογική) “επικοινωνία” μεταξύ hosts Να θυμάστε το IP δεν εγγυάται αξιόπιστη μετάδοση των πακέτων και λήψη τους σύμφωνα με τη σειρά που στάλθηκαν ούτε ότι δεν θα υπάρξουν λάθη σε bits των πακέτων Επίπεδο μεταφοράς: (λογική) “επικοινωνία” μεταξύ διεργασιών Βασίζεται,επεκτέινει, τις υπηρεσίες επιπέδου δικτύου Household analogy: 12 στέλνουν γράμματα σε 12 παιδιά Διεργασίες = παιδιά Μηνύματα εφαρμογών = γράμματα σε φακέλους hosts = σπίτια Πρωτόκολλο μεταφοράς =γονείς των παιδιών Πρωτόκολλο επιπέδου δικτύου = ταχυδρομική υπηρεσία Επίπεδο μεταφοράς vs. δικτύου Επίπεδο μεταφοράς
αναξιόπιστη, χωρίς σειρά παράδοση: UDP Καμία περιτή επέκταση με IP καλύτερης προσπάθειας αξιόπιστη, σε σειρά παράδοση: TCP Έλεγχος συμφόρησης Έλεγχος ροής Εγκαθίδρυση σύνδεσης Μη διαθέσιμες υπηρεσίες : Εγγυήσεις καθυστέρησης Εγγυήσεις bandwidth application transport network data link physical 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 logical end-end transport Διαδικτυακά πρωτόκολλα επιπέδου μεταφοράς Επίπεδο μεταφοράς
Πολύπλεξη στον αποστέλλων host: Αποπολύπλεξη στον λαμβάνων host: Πολύπλεξη/αποπολύπλεξη(multiplexing/demultiplexing) Μεταφέροντας τα segments που έχουν ληφθεί στο σωστό socket Μαζεύοντας δεδομένα από πολλαπλά sockets, προσθέτοντας επικεφαλίδα (που αργότερα χρησιμοποιείται για demultiplexing) = socket = process application P4 application application P1 P2 P3 P1 transport transport transport network network network link link link physical physical physical host 3 host 2 host 1 Επίπεδο μεταφοράς
Το host λαμβάνει IP datagrams Κάθε datagram έχει IP διεύθυνση πηγής, IP διεύθυνση προορισμού Κάθε datagram “μεταφέρει” 1 segment επιπέδου μεταφοράς Κάθε segment έχειαριθμό θύρας (port) πηγής και προορισμού Η συσκευή χρησιμοποιεί IP διευθύνσεις & αριθμούς θυρών για να κατευθύνει το segment στο κατάλληλο socket 32 bits source port # dest port # άλλα πεδία επικεφαλίδας δεδομένα εφαρμογής (μήνυμα) Μορφή TCP/UDP segment Πώς δουλεύει η αποπολύπλεξη (demultiplexing) Επίπεδο μεταφοράς
Δημιουργεί sockets με αριθμούς θυρών: DatagramSocket mySocket1 = new DatagramSocket(99111); DatagramSocket mySocket2 = new DatagramSocket(99222); UDP socket χαραχτηρίζεται από τα παρακάτω δύο πεδία: IP διεύθυνση προορισμού, αριθμός θύρας προορισμού Οταν ένα host λαμβάνει ένα UDP segment: Ελέγχει τον αριθμό θύρας προορισμούστο segment Κατευθύνει το UDP segment στο socket με αυτόν τον αριθμό θύρας IP datagrams με διαφορετικό IP διεύθυνση πηγήςκαι/ή αριθμούς θύρας πηγήςκατευθύνονται στο ίδιο socket Aποπολύπλεξηχωρίς “σύνδεση” (connectionless demultiplexing ) Επίπεδο μεταφοράς
P3 P2 P1 P1 SP: 9157 client IP: A DP: 6428 Client IP:B server IP: C SP: 5775 SP: 6428 SP: 6428 DP: 6428 DP: 9157 DP: 5775 Aποπολύπλεξηχωρίς σύνδεση (συνέχεια) DatagramSocket serverSocket = new DatagramSocket(6428); Η θύρα πηγής (SP)παρέχει “διεύθυνση επιστροφής” Επίπεδο μεταφοράς
TCP socket χαραχτηρίζεται απο 4 πεδία: source IP address source port number dest IP address dest port number Ο παραλήπτης χρησιμοποιεί και τα 4 πεδία για να προωθήσει το segment στο κατάλληλο socket Ενας server host μπορεί να υποστηρίξει πολλαπλά ταυτόχρονα (“παράλληλαστον χρόνο”) TCP sockets: κάθε socket χαραχτηρίζεται από τη δική του 4-άδα Web servers έχουν διαφορετικά sockets για κάθε client που συνδέεται non-persistent HTTP έχουν διαφορετικά sockets για κάθε αίτημα Αποπολύπλεξημε σύνδεση (Connection-oriented demultiplexing ) Επίπεδο μεταφοράς
SP: 9157 SP: 5775 P1 P1 P2 P4 P3 P6 P5 client IP: A DP: 80 DP: 80 Αποπολύπλεξημε σύνδεση (συνέχεια) S-IP: B D-IP:C SP: 9157 DP: 80 Client IP:B server IP: C S-IP: A S-IP: B D-IP:C D-IP:C Επίπεδο μεταφοράς
SP: 9157 SP: 5775 P1 P1 P2 P3 client IP: A DP: 80 DP: 80 Αποπολύπλεξημε σύνδεση:Threaded Web Server P4 S-IP: B D-IP:C SP: 9157 DP: 80 Client IP:B server IP: C S-IP: A S-IP: B D-IP:C D-IP:C Επίπεδο μεταφοράς
Μινιμαλιστικόπρωτόκολλο μεταφοράς του Διαδικτύου Υπηρεσία “καλύτερης δυνατής προσπάθειας” (best-effort service), τα UDP segments μπορεί να: να χαθούν Παραληφθούν από την εφαρμογή με λάθος σειρά ασυνδεσιστρεφές: Δεν γίνεταιχειραψία (handshaking)μεταξύ UDP sender, receiver Κάθε UDP segment το χειρίζεται το UDP ανεξάρτητα από τα άλλα Τι εξυπηρετεί το UDP? Δεν χρειάζεται να προηγηθεί εγκατάσταση σύνδεσης (που προσθέτει καθυστέρηση) απλό: δεν διατηρείται “κατάσταση” στους sender, receiver Μικρή επικεφαλίδα segment Δεν παρέχει έλεγψο συμφόρησης: το UDP μπορεί να στείλει δεδομένα όσο γρήγορα μπορέι UDP: User Datagram Protocol [RFC 768] Επίπεδο μεταφοράς
Συχνά χρησιμοποιείται για πολυμεσικές εφαρμογές συνεχούς ροής (streaming multimedia apps) Ανοχή σε απώλειες Ευαισθησία στο ρυθμό Άλλες χρήσεις του UDP DNS SNMP Αξιόπιστη μεταφορά πάνω από UDP: Προστίθεται η αξιοπιστία στο επίπεδο εφαρμογής Ανάκαμψη από λάθη με βάση την εφαρμογή! UDP: περισσότερα 32 bits μήκος, σε bytes του UDP segment, μαζί με την επικεφαλίδα source port # dest port # checksum length δεδομένα εφαρμογής (μήνυμα) Μορφή UDP segment Επίπεδο μεταφοράς
Domain Name Server (DNS) • Τρέχει στο επίπεδο εφαρμογής • DNS application τρέχει σε ένα host και θέλει να στείλει ένα αίτημα-ερώτηση (query) • Φτιάχνει ένα μήνυμα query και το “περνά” στο UDP • Δεν γίνεται κάποιο handshake με το UDP που τρέχει στον παραλήπτη που είναι μία άλλη συσκευή στο δίκτυο • Το UDP προσθέτει μια επικεφαλίδα στο μήνυμα και προωθεί το μήνυμα στο επίπεδο δικτύου • To DNS στο querying host περιμένει την απάντηση στο query που έστειλε • Εάν δεν λάβει απάντηση (γιατί ή το query ή η απάντηση χάθηκαν) τότε στέλνει το query σε άλλο name server ή ειδοποιεί την εφαρμογή ότι δε έχει λάβει απάντηση Επίπεδο μεταφοράς
Αποστολέας: Χειρίζεται τα περιεχόμενα του segment σανακολουθία των 16-bit integers checksum: συμπλήρωμαως προς 1 του αθροίσματος των περιεχομένων του segment sender puts checksum value into UDP checksum field Παραλήπτης: Υπολογίζει το checksum του λαμβανόμενου segment Ελέγχει εάν η υπολογισθείσα τιμή του checksum ισούταιμε την τιμή στο πεδίο checksum: NO – ανίχνευση λάθους YES – καμία ανίχνευση σφάλματος Aλλά μήπως υπάρχουν λάθη παρά όλα αυτά; Περισσότερα μετα.... UDP checksum Στόχος:ανίχνευση λαθών (π.χ., ανεστραμμένα bits) στο μεταδιδόμενο segment Αίτια των λαθών:θόρυβος στη σύνδεση (link) ή πρόβλημα στο δρομολογητή Αφού τα χαμηλότερα επίπεδα έχουν ανίχνευση λαθών γιατί γίνεται από το UDP? Δεν υπάρχει εγγύηση ότι όλες οι συνδέσεις (links) μεταξύ αποστολέα & παραλήπτη χρησιμοποιούν πρωτόκολλο ανίχνευσης λάθους Επίπεδο μεταφοράς
Παράδειγμα Internet Checksum • Σημείωση • Όταν προσθέτουμε αριθμούς ένα κρατούμενο από το πιο σημαντικό bit πρέπει να προστεθέί στο αποτέλεσμα • Παράδειγμα: πρόσθεση δύο 16-bit integers 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 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 wraparound sum checksum Επίπεδο μεταφοράς
Σημαντικό στα επίπεδα εφαρμογής, μεταφοράς και link top-10 λίστα με σημαντικά θέματα δικτύου! Τα χαρακτηριστικά του μη αξιόπιστου καναλιού θα προσδιορίσουν την πολυπλοκότητα του πρωτοκόλλου αξιόπιστης μεταφοράς δεδομένων Αρχές αξιόπιστης μεταφοράς δεδομένων Επίπεδο μεταφοράς
10 Mbps 1.5 Mbps 100 Mbps Συμφόρηση (congestion) bottleneck link • Τα sources ανταγωνίζονται για τους πόρους του δικτύου, αλλά • δέν έχουν γνώση των πόρων του δικτύου (state of resource) • δεν ξέρουν την ύπαρξη η μία της άλλης • Με αποτέλεσμα: • Πακέτα να χάνονται (λόγω buffer overflow στους δρομολογητές) • Μεγάλες καθυστερήσεις (αναμονή στις ουρέςτων buffers στους δρομολογητές) • throughput μικρότερο από το bottleneck link (1.5Mbps για την παραπάνω τοπολογία) κατάρρευση λόγω συμφόρησης Επίπεδο μεταφοράς
Κατάρρευση λόγω συμφόρησης (Congestion Collapse) • Ορισμός: Αύξηση στο φόρτο δικτύου οδηγεί σε μείωση της χρήσιμης δουλειάς που γίνεται • Πολλές πιθανές αιτίες • Πλαστές επαναμεταδόσεις πακέτων βρίσκονται ακόμα σε εξέλιξη • Κλασική κατάρρευση λόγω συμφόρησης • Πως μπορεί αυτό να συμβεί με την διατήρηση των πακέτων • Λύση: καλύτεροι timers TCP έλεγχος συμφόρησης • Μη παραδοθέντα πακέτα • Τα πακέτα καταναλώνουν πόρους και γίνονταο drop κάπου αλλού στο δίκτυο • Λύση: έλεγχος συμφόρησης γιαΌΛΗτην κίνηση Επίπεδο μεταφοράς
Πλήρως αμφίδρομα δεδομένα: Ροή δεδομένων και προς τις δύο κατευθύνσεις στην ίδια σύνδεση MSS: maximum segment size (μέγιστο μέγεθος του segment) συνδεσιστρεφές: χειραψία (ανταλλαγή μηνυμάτων ελέγχου) αρχικοποιούν την κατάσταση του αποστολέα και του παραλήπτη πριν την ανταλλαγή δεδομένων Ελεγχόμενη ροή: Ο αποστολέας δεν θα κατακλύσει τον παραλήπτη σημείο-προς-σημείο: Ένας αποστολέας, ένας παραλήπτης (σε αντίθεση με το multicasting) αξιόπιτο, σε σειράροή των byte: Ηεφαρμογή από επάνω θα “παραλάβει” τα πακέτα στη σωστή σειρά pipelined: Ο TCP έλεγχος συμφόρησης& ροήςθέτουν το μέγεθος παραθύρου Πολλά πακέτα μπορούν να έχουν σταλθεί παράλληλα και να μην έχουν γίνει ACKed Buffers αποστολής & παραλαβής TCP: ΕπισκόπησηRFCs: 793, 1122, 1323, 2018, 2581 Επίπεδο μεταφοράς
32 bits source port # dest port # sequence number acknowledgement number head len not used Receive window U A P R S F checksum Urg data pnter Επιλογές(variable length) Δεδομένα εφαρμογής (μεταβλητό μήκος) Δομή TCP segment URG: επέιγοντa δεδομένα (γενικά δεν χρησιμοποιείται) Μάτρηση με βάση τα bytes των δεδομένων (όχι τα segments!) ACK: ACK # έγγυρο PSH: σπρώξε data τώρα (γενικά δεν χρησιμοποιείται) # bytes που ο παραλήπτης διατίθεται να παραλάβει RST, SYN, FIN: Εγκατάσταση σύνδεσης (εντολές εγξατάσης, τεραμτισμού) Internet checksum (όπως στο UDP) Επίπεδο μεταφοράς
Sequence Number Space Το TCP βλέπει τα δεδομένα σαν μια ροή δεδομένων, σειρά από bytes Ο αποστολέας στέλνει τα πακέτα σύμφωνα με τη σειρά αυτή Ο παραλήπτης θα προσπαθήσει να την “ξαναδημιουργήσει” κάθε byte στη ροή των bytes είναι αριθμημένο • 32 bit τιμή • Κάνει wrap around • Η αρχική τιμή επιλέγεται την ώρα εκκίνησης • Το TCP σπάει τη ροή δεδομένων σε πακέτα. • Το μέγεθος πακέτου περιορίζεται από τομέγιστομέγεθος ssegment (MSS) • Κάθε πακέτο έχει ένα sequence number (αριθμό σειράς) • Προσδιορίζει που χωραέι στη ροή δεδομένων 13450 14950 16050 17550 packet 8 packet 9 packet 10 Επίπεδο μεταφοράς
Βήμα 1:ο client host στέλνει τοTCP SYN segmentστον server Προσδιορίζει τον αρχικό αριθμό σειράς (seq #) καθόλου δεδομένα Βήμα 2:ο server host λαμβάνει το SYN, απαντάει με SYNACK segment Ο server δεσμέυει buffers Προσδιορίζει τον αρχικό αριθμό σειράς Βήμα 3:ο client λαμβάνει SYNACK, απαντάει με ACK segment, που μπορεί να περιέχει και δεδομένα TCP σύνδεση: χειραψία σε 3 βήματα Επίπεδο μεταφοράς
Εγκαθίδρυση σύνδεσης: χειραψία σε 3 βήματα • Κάθε πλευρά ειδοποιεί την άλλη για τον αρχικό αριθμό σειράς (seq #)που θα χρησιμοποιήσει για την αποστολή • Γιατί να μην επιλέξουμε απλά το 0? • Πρέπει να αποφύγει την επικάλυψη με προηγούμενο πακέτο • Θέματα άσφάλειας • Κάθε πλευρά επιβεβαιώνει τον αριθμό σειράς της άλλης r • SYN-ACK: αριμθμός σειράς επιβεβαίωης + 1 • Μπορεί να συνδυάσει το δεύτερο SYN με το πρώτοACK SYN: SeqC ACK: SeqC+1 SYN: SeqS ACK: SeqS+1 Client Server Επίπεδο μεταφοράς
Υπενθύμιση: Οι TCP sender, receiver εγκαθιδρύουν σύνδεση ανταλλάξουν segments δεδομένων αρχικοποίησημεταβλητών τουTCP : seq. #s buffers, πληροφορίες ελέγχου ροής (e.g. RcvWindow) client:ξεκινάει τη σύνδεση Socket clientSocket = new Socket("hostname","port number"); server:cδέχεται επικοινωνία από τον client Socket connectionSocket = welcomeSocket.accept(); Βήμα 1:ο client host στέλνει τοTCP SYN segment στον server Προσδιορίζει τον αρχικό αριθμό σειράς (seq #) καθόλου δεδομένα Βήμα 2:ο server host λαμβάνει το SYN, απαντάει με SYNACK segment Ο server δεσμέυει buffers Προσδιορίζει τον αρχικό αριθμό σειράς Βήμα 3:ο client λαμβάνει SYNACK, απαντάει με ACK segment, που μπορεί να περιέχει και δεδομένα Διαχείρηση TCP σύνδεσης Επίπεδο μεταφοράς
Κλείσιμο μίας σύνδεσης: Ο client κλέινει το socket:clientSocket.close(); Βήμα 1:το τερματικό σύστημα του clientστέλνει TCP FIN segment ελέγχου στον server Βήμα 2:ο serverλαμβάνειτο FIN, απαντάει με ACK. Κλείνει την σύνδεση, στέλνει FIN client server close FIN ACK close FIN ACK timed wait closed Διαχείρηση TCP σύνδεσης(συνέχεια) Επίπεδο μεταφοράς
Βήμα 3:ο clientλαμβάνει το FIN, απανταέι με ACK Μπαίνει σε χρονισμένη αναμονή - θα απαντήσει με ACK στα FINs που λαμβάνει Βήμα 4:ο server, λαμβάνει το ACK. Η σύνδεση έκλεισε. Σημείωση:με μικρές μετατροπές, ταυτόχρονα FINs μπορούν να διαχειριστούν. Διαχείρηση TCP σύνδεσης(συνέχεια) client server closing FIN ACK closing FIN ACK timed wait closed closed Επίπεδο μεταφοράς
TCP Connection Management (cont) Κύκλος ζωής TCP server Κύκλος ζωής TCP client Επίπεδο μεταφοράς
Παράδειγμα εγκαθίδρυσης TCP σύνδεσης 09:23:33.042318 IP 128.2.222.198.3123 > 192.216.219.96.80: S 4019802004:4019802004(0) win 65535 <mss 1260,nop,nop,sackOK> (DF) 09:23:33.118329 IP 192.216.219.96.80 > 128.2.222.198.3123: S 3428951569:3428951569(0) ack 4019802005 win 5840 <mss 1460,nop,nop,sackOK> (DF) 09:23:33.118405 IP 128.2.222.198.3123 > 192.216.219.96.80: . ack 3428951570 win 65535 (DF) • Client SYN • SeqC: Seq. #4019802004, window 65535, max. seg. 1260 • Server SYN-ACK+SYN • λαμβάνει: #4019802005 (= SeqC+1) • SeqS: Seq. #3428951569, window 5840, max. seg. 1460 • Client SYN-ACK • λαμβάνει: #3428951570 (= SeqS+1) Επίπεδο μεταφοράς
Client Server Διάγραμμα κατάστασηςTCP: εγκαθίδρυσης σύνδεσης CLOSED active OPEN create TCB Snd SYN passive OPEN CLOSE create TCB delete TCB CLOSE LISTEN delete TCB SEND rcv SYN SYN RCVD SYN SENT snd SYN ACK snd SYN rcv SYN snd ACK Rcv SYN, ACK rcv ACK of SYN Snd ACK CLOSE ESTAB Send FIN Επίπεδο μεταφοράς
Κλείσιμο σύνδεσης • Οποιαδήποτε πλευρά μπορέι να ξεκινήσει το κλείσιμο της σύνδεσης • Στέλνει FIN σήμα • “Δενα θα στείλω άλλα δεδομένα” • Η άλλη πλευρά μπορεί να συνεχίσει να στέλνει δεδομένα • Ανοιχτή κατά το ήμισι σύνδεση • Πρέπει να συνεχίσει να επιβεβαιώνει • Επιβεβαίωση του FIN • Επιεβεβαίωση με sequence number + 1 A B FIN, SeqA ACK, SeqA+1 Data ACK FIN, SeqB ACK, SeqB+1 Επίπεδο μεταφοράς
Παράδειγμα κλεισίματος TCP σύνδεσης 09:54:17.585396 IP 128.2.222.198.4474 > 128.2.210.194.6616: F 1489294581:1489294581(0) ack 1909787689 win 65434 (DF) 09:54:17.585732 IP 128.2.210.194.6616 > 128.2.222.198.4474: F 1909787689:1909787689(0) ack 1489294582 win 5840 (DF) 09:54:17.585764 IP 128.2.222.198.4474 > 128.2.210.194.6616: . ack 1909787690 win 65434 (DF) • Session • Echo client on 128.2.222.198, server on 128.2.210.194 • Client FIN • SeqC: 1489294581 • Server ACK + FIN • Ack: 1489294582 (= SeqC+1) • SeqS: 1909787689 • Client ACK • Ack: 1909787690 (= SeqS+1) Επίπεδο μεταφοράς
Active Close Passive Close Διάγραμμα κατάστασης:Κλείσιμο σύνδεσης CLOSE ESTAB send FIN CLOSE rcv FIN send FIN send ACK FIN WAIT-1 CLOSE WAIT rcv FIN CLOSE snd ACK ACK snd FIN rcv FIN+ACK FIN WAIT-2 CLOSING LAST-ACK snd ACK rcv ACK of FIN rcv ACK of FIN TIME WAIT CLOSED rcv FIN Timeout=2msl snd ACK delete TCB Επίπεδο μεταφοράς
Υπολογισμός του Round-trip time estimation & του timeout • Μηχανισμός που καθορίζει πόσο να περιμένει ο αποστολέας μέχρι να ξαναστείλει το πακέτο • Ο timer (εάν ήδη δεν “τρέχει” για κάποιο άλλο segment) ξεκινά όταν το segment “παραδίδεται” στο IP επίπεδο • Όταν ο timer κάνει expire το segment ξαναστέλνεται και το TCP ξεκινά ξανά τον timer Το TCP του sender διατηρεί πληροφορία για το παλιότερο unacknowledged byte Επίπεδο μεταφοράς
Έλεγχος ροής του TCP Το TCP είναι ένα πρωτόκολλο κυλιόμενου παραθύρου(sliding window) • Για μέγεθος παραθύρου n,μπορέι να στείλει εώς και nbytes χωρίςνα λάβει επιβεβαίωση • Όταν τα δεδομένα επιβεβαιωθούν τότε το παράθυρο μετακινείται προς τα μπροστά • Κάθε πακέτο διαφημίζει ένα μέγθος παραθύρου • Προσδιορίζει τον αριθμό των bytes για τα οποία έχει χώρο • Το οriginal TCP στέλνει πάντα ολόκληρο το παράθυρο • Ο έλεγχος συμφόρησης τώρα το περιορίζει αυτό Επίπεδο μεταφοράς
Έλεγχος ροής με παράθυρο: αποστέλουσσα πλευρά window Στάλθηκαν αλλά δεν επιβεβαιώθηκαν Δεν στάλθηκαν ακόμα Στάλθηκαν και επιβεβαιώθηκαν Επόμενα για αποστολή Επίπεδο μεταφοράς
Μηχανισμός γρήγορης επαναποστολής • Η παραλαβή 3 ομοίων ACKs για ένα συγκεκριμένο segment παίζει το ρόλο ενός “εμμεσου”NAK για το segment που ακολουθεί, προκαλώντας το retransmission του segment προτού γίνει timeout • To TCP χρησιμοποιεί τα sequence numbers για να βρεί ποια πακέτα έχουν χαθεί Επίπεδο μεταφοράς
Έλεγχος ροής με παράθυρο: αποστέλουσσα πλευρά Packet Received Packet Sent Source Port Dest. Port Source Port Dest. Port Sequence Number Sequence Number Acknowledgment Acknowledgment HL/Flags Window HL/Flags Window D. Checksum Urgent Pointer D. Checksum Urgent Pointer Options… Options... App write επιβεβαιωμένα σταλμέναsent πρόκειται να σταλούν Εκτός παραθύρου Επίπεδο μεταφοράς
Έλεγχος ροής με παράθυρο: λαμβάνουσσα πλευρά Τι πρέπει να κάνει ο παραλήπτης? New Buffer παραλήπτη Επιβεβαιωμένα αλλά δεν έχουν παραδοθεί ακόμα Δεν έχουν Επιβεβαιωθεί ακόμα window Επίπεδο μεταφοράς
Seq. #’s: byte stream “number” of first byte in segment’s data ACKs: seq # ofnext byte expectedfrom other side cumulative ACK Q: how receiver handles out-of-order segments A: TCP spec doesn’t say- up to implementor Ο παραλήπτης έχει τις παρακάτω δύο γενικές επιλογές αμέσως “πετά” τα segments που έφτασαν με λάθος σειρά, ή “κρατά” τα segments που ήρθα με λάθος σειρά και περιμένει τα λάβει πακέτα με τα bytes που “χάθηκαν/δεν έφτασαν” νακαλύψουν τα κενά TCP seq. #’s and ACKs Επίπεδο μεταφοράς
Seq. #’s: “αριθμός” ροής bytesτου πρώτου byte στα δεδομένα του segment ACKs: seq # του επόμενου byte που αναμένεται από την άλλη πλευρά Αθροιστική (cumulative) ACK Q:Πως ο παραλήπτης διαχειρίζεται ταoεκτός σειράς segments A: Η περιγραφή τουTCP δεν το λέει - αποφασίζει αυτός που το υλοποιεί Ο παραλήπτης: αμέσως “πετά” τα segments που έφτασαν με λάθος σειρά, ή “κρατά” τα segments που ήρθα με λάθος σειρά και περιμένει τα λάβει πακέτα με τα bytes που “χάθηκαν/δεν έφτασαν” νακαλύψουν τα κενά time TCP seq. #’s και ACKs Host B Host A User types ‘C’ Seq=42, ACK=79, data = ‘C’ host ACKs receipt of ‘C’, echoes back ‘C’ Seq=79, ACK=43, data = ‘C’ host ACKs receipt of echoed ‘C’ Seq=43, ACK=80 Απλό σενάριο telnet Επίπεδο μεταφοράς
Q:πως να θέσουμε την τιμή του TCP timeout? Μεγαλύτερο από το RTT Αλλά τοRTT ποικίλλει Πολύ μικρόπρόωροtimeout μη απαραίτητες επαναποστολές Πολύ μεγάλο: μικρή αντίδραση στην απώλεια segment Q:πως να υπολογίσουμε το RTT? SampleRTT:ο χρόνος που μετρήθηκε από την αποστολή του segment ως την παραλαβή του ACK Αγνοεί segments που έχουν φτάσει με retransmissions SampleRTTθα ποικίλλει, θέλουμε το υπολογισμένο RTT “smoother” Βρίσκουμε το Μ.Ο από πολλές πρόσφατεςμετρήσεις, όχι΄μόνο το τωρινό SampleRTT TCP Round Trip Time και Timeout Επίπεδο μεταφοράς
TCP Round Trip Time και Timeout EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT • Μ.Ο. με εκθετικά βάρη (exponential weighted moving average) • Η επίδραση των παλαιότερων δειγμάτων φθίνει εκθετικά γρήγορα • Τυπική τιμή: = 0.125 Επίπεδο μεταφοράς
Παράδειγμα RTT εκτίμησης: Επίπεδο μεταφοράς
Θέτοντας το timeout EstimtedRTTσυν “περιθώριο ασφαλείας” Μεγάλη μεταβλητότητα στοEstimatedRTT ->μεγαλύτερο περιθώριο ασφαλείας Πρώτα υπολογίζεται η τυπική απόκλιση του SampleRTT από το EstimatedRTT: TCP Round Trip Time και Timeout DevRTT = (1-)*DevRTT + *|SampleRTT-EstimatedRTT| (τυπικά, = 0.25) Μετά η τιμή του χρονικού διαστήματος τίθεται σε: TimeoutInterval = EstimatedRTT + 4*DevRTT Επίπεδο μεταφοράς