Professional Documents
Culture Documents
Κεφάλαιο 5
ΤΑ ΠΡΩΤΟΚΟΛΛΑ ΜΕΤΑΦΟΡΑΣ ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ
Σκοπός :
Σε αυτό το κεφάλαιο θα γνωρίσουμε τα πρωτόκολλα UDP και TCP, με τα οποία
επιτυγχάνεται η επικοινωνία μεταξύ των εφαρμογών υπολογιστών στο Διαδίκτυο, δίδοντας
έμφαση στις βασικές λειτουργίες τους.
Προσδοκώμενα Αποτελέσματα :
Όταν θα έχετε μελετήσει αυτό το κεφάλαιο, θα μπορείτε να :
• εξηγήσετε τον τρόπο με τον οποίο τα πρωτόκολλα μεταφοράς του Διαδικτύου
διαχωρίζουν τους διαφορετικούς προορισμούς πακέτων σ’ έναν κόμβο.
• ορίσετε το πρωτόκολλο UDP και να περιγράψετε συνοπτικά τις δύο λειτουργίες
του.
• ορίσετε το πρωτόκολλο TCP και να περιγράψετε συνοπτικά πέντε από τις βασικές
λειτουργίες του.
• περιγράψετε με αδρές γραμμές τη μορφή των μηνυμάτων UDP και TCP.
• αναφέρετε πέντε βασικά χαρακτηριστικά του πρωτοκόλλου TCP.
• περιγράψετε το μηχανισμό ολισθαίνοντος παραθύρου στο TCP και να
αιτιολογήσετε τη χρησιμότητά του.
• εξηγήσετε τον έλεγχο ροής και τον έλεγχο συμφόρησης στο TCP.
Έννοιες – Κλειδιά :
• μηχανισμός ολισθαίνοντος
• αργή εκκίνηση
παραθύρου
• αλγόριθμος προσθετικής αύξησης / • Πρωτόκολλο Αυτοδύναμων
πολλαπλασιαστικής μείωσης Πακέτων Χρήστη (UDP)
• διάγραμμα μετάβασης κατάστασης • Πρωτόκολλο Ελέγχου Μετάδοσης
TCP (TCP)
• εγκαθίδρυση σύνδεσης TCP • τερματισμός σύνδεσης TCP
• έλεγχος ροής • υποδοχή (socket)
• έλεγχος συμφόρησης • ψευδοεπικεφαλίδα UDP ή TCP
• θύρα πρωτοκόλλου μεταφοράς
171
Εισαγωγικές παρατηρήσεις
Στα προηγούμενα Κεφάλαια γνωρίσαμε μία σειρά πρωτοκόλλων τα οποία μπορούν να
χρησιμοποιηθούν για τη μεταφορά πληροφορίας μεταξύ υπολογιστών σ’ ένα διαδίκτυο.
Συγκεκριμένα, η πληροφορία οργανώνεται σε αυτοδύναμα πακέτα IP, τα οποία
δρομολογούνται με βάση τη διεύθυνση IP του τελικού προορισμού τους.
Όταν ένα πακέτο IP φτάσει στο υπολογιστικό σύστημα που αποτελεί τον προορισμό
του, τότε η πληροφορία που περιέχει θα πρέπει να προωθηθεί στην κατάλληλη εφαρμογή
του υπολογιστή για περαιτέρω επεξεργασία. Πώς όμως αποφασίζεται σε ποια εφαρμογή
(ή, αλλιώς, σε ποια διεργασία) του υπολογιστή θα πρέπει να προωθηθεί το περιεχόμενο
του πακέτου; Η διεύθυνση IP χαρακτηρίζει μοναδικά ένα υπολογιστικό σύστημα στα
όρια του δικτύου στο οποίο ανήκει και δεν περιέχει καμία πληροφορία σχετικά με τις
διεργασίες αυτού.
A B
R1 R3
R2
FDDI
A B
e-mail WWW e-mail WWW
Επίπεδο
Μεταφοράς
TCP TCP
Επίπεδο R1 R2 R3
Δικτύου
IP IP IP IP IP
Επίπεδο
Σύνδεσης ETH ETH FDDI FDDI PPP PPP ETH ETH
Δεδομένων
Φυσικό
Επίπεδο
Έστω για παράδειγμα το διαδίκτυο του Σχήματος 5.1, όπου οι υπολογιστές Α και Β
επικοινωνούν μεταξύ τους χρησιμοποιώντας το πρωτόκολλο δικτύου IP. Μία αυθαίρετη
χρονική στιγμή, ο χρήστης Β λαμβάνει μηνύματα ηλεκτρονικού ταχυδρομείου από το
172
χρήστη Α, ενώ ταυτόχρονα περιηγείται στο δικτυακό τόπο που φιλοξενείται στο σύστημα
Α. Τα κατάλληλα πακέτα IP που δημιουργούνται στον κόμβο Α για την εκπλήρωση των
παραπάνω υπηρεσιών προωθούνται στον κόμβο Β μέσω των δρομολογητών R1, R2 και
R3, όπως απεικονίζεται στο Σχήμα 5.1. Σε κάθε πακέτο IP που φτάνει στον κόμβο Β
εκτελούνται όλες οι προβλεπόμενες λειτουργίες από τη στοίβα πρωτοκόλλων
επικοινωνίας. Τα δεδομένα ελέγχου που εξάγονται από το πακέτο στα τρία χαμηλότερα
επίπεδα (Δικτύου, Σύνδεσης Δεδομένων και Φυσικό) δεν περιέχουν την ικανή
πληροφορία για την επιλογή της εφαρμογής (e-mail ή WWW) για την οποία προορίζεται
το περιεχόμενο του πακέτου.
Σύμφωνα με το μοντέλο αναφοράς OSI, ο μηχανισμός διαχωρισμού των διαφορετικών
προορισμών σ’ έναν κόμβο υλοποιείται στο Επίπεδο Μεταφοράς. Στο Διαδίκτυο, τα
πρωτόκολλα του Επιπέδου Μεταφοράς είναι δύο: το Πρωτόκολλο Ελέγχου Μετάδοσης
(Transmission Control Protocol, TCP) και το Πρωτόκολλο Αυτοδύναμων Πακέτων
Χρήστη (User Datagram Protocol, UDP).
Επίσης, το πρωτόκολλο IP έχει σχεδιαστεί έτσι ώστε να υλοποιεί μία αναξιόπιστη
υπηρεσία μεταφοράς πακέτων. Ο χαρακτηρισμός αναξιόπιστη δίδεται υπό το σκεπτικό
ότι, ενώ τα πακέτα IP μπορεί να απορριφθούν από κάποιον ενδιάμεσο κόμβο, να
αλλοιωθούν λόγω θορύβου, να απωλέσουν τη σειρά με την οποία στάλθηκαν εξαιτίας
διαφορετικής επιλεγείσας διαδρομής ή ακόμα και να παραδοθούν περισσότερες από μία
φορές στον παραλήπτη κόμβο, το πρωτόκολλο IP δεν αναλαμβάνει καμία επανορθωτική
ενέργεια για την αντιμετώπιση αυτών των περιπτώσεων. Αντίθετα, όλες οι ενέργειες που
απαιτούνται για την εγκαθίδρυση αξιόπιστης επικοινωνίας μεταξύ των ενδιαφερομένων
μερών διενεργούνται στο Επίπεδο Μεταφοράς.
Τέλος, μία πρόσθετη λειτουργία που εκτελείται στο Επίπεδο Μεταφοράς είναι και ο
έλεγχος της ροής των δεδομένων που ανταλλάσσονται μεταξύ των τερματικών κόμβων.
Εάν ο παραλήπτης κόμβος λαμβάνει δεδομένα με ρυθμό μεγαλύτερο από αυτόν που
μπορεί απρόσκοπτα να εξυπηρετήσει, τότε μπορεί να ζητήσει τη μείωση του ρυθμού
εκπομπής από τον αποστολέα κόμβο. Αντίστροφα, εάν ο παραλήπτης κόμβος
διαπιστώσει ότι ένα κανάλι επικοινωνίας υποχρησιμοποιείται, τότε μπορεί να ζητήσει
από τον αποστολέα να αυξήσει τον ρυθμό μετάδοσης δεδομένων προς αυτόν. Αυτός ο
έλεγχος ροής μπορεί επίσης να χρησιμοποιηθεί και για την αντιμετώπιση φαινομένων
συμφόρησης του δικτύου.
173
Το πρωτόκολλο UDP (User Datagram Protocol) είναι ένα πολύ απλό πρωτόκολλο
μεταφοράς, καθώς υλοποιεί μόνο έναν μηχανισμό για την ανταλλαγή αυτοδύναμων
πακέτων μεταξύ των εφαρμογών υπολογιστών σ’ ένα δίκτυο IP, χωρίς να απαιτείται η
εγκαθίδρυση σύνδεσης μεταξύ των υπολογιστών που φιλοξενούν αυτές τις εφαρμογές.
Έτσι, αν εξαιρέσουμε έναν περιορισμένο έλεγχο εντοπισμού σφαλμάτων μεταφοράς,
το πρωτόκολλο UDP δεν εκτελεί καμία ενέργεια για τη βελτίωση της (αναξιόπιστης)
υπηρεσίας μεταφοράς δεδομένων που προσφέρει το IP, ούτε ελέγχει τη ροή των
δεδομένων μεταξύ των τερματικών κόμβων.
Εξαιτίας όμως της απλότητάς του και των περιορισμένων λειτουργιών του, το
πρωτόκολλο UDP επιβαρύνει αμελητέα το χρόνο μεταφοράς των πακέτων από τον
αποστολέα στον παραλήπτη, γι’ αυτό και χρησιμοποιείται ευρέως από εφαρμογές με
μικρή ανοχή στην καθυστέρηση μεταφοράς, όπως π.χ. η διανομή εικόνας/ήχου
(video/audio streaming).
174
WWW
e-mail e-mail WWW WWW θύρα
Επίπεδο Εφαρμογής πρωτοκόλλου
p1 p2 p1 p2 p3 p1 p2 μεταφοράς
Επίπεδο Μεταφοράς
Α Β Γ διεύθυνση
δικτύου
Επίπεδο Δικτύου
Δεσμευμένες θύρες
Πώς όμως γίνεται η αντιστοίχηση των θυρών σε διεργασίες; Αν αυτή γινόταν τυχαία,
τότε πως θα γνώριζαν οι υπολογιστές ποιες θύρες θα πρέπει να προσπελάσουν για την
εκπλήρωση μίας υπηρεσίας; Για παράδειγμα, πως θα γνώριζε ένας πελάτης WWW ότι θα
πρέπει να προσπελάσει τη θύρα TCP 80 στη διεύθυνση δικτύου προορισμού για να
υποβάλει μία αίτηση προσπέλασης ιστοσελίδας στον αντίστοιχο εξυπηρετητή;
Για την αντιστοίχηση των αριθμών θυρών στα πρωτόκολλα μεταφοράς του
Διαδικτύου ακολουθείται η εξής πολιτική. Οι θύρες 0 – 1023 δεσμεύονται για
εξυπηρετητές, ενώ οι υπόλοιπες θύρες (1024 – 65535) για εφήμερη χρήση από
εφαρμογές πελάτες.
Ένα μέρος από τις θύρες των εξυπηρετητών έχουν καθιερωθεί στη διεθνή κοινότητα
για τη χρήση συγκεκριμένων υπηρεσιών. Για παράδειγμα, στους εξυπηρετητές WWW
αντιστοιχίζεται εξ ορισμού η θύρα TCP 80, στους εξυπηρετητές DNS οι θύρες TCP 53
και UDP 53 και στους εξυπηρετητές SMTP (e-mail) η θύρα TCP 25. Οι δεσμευμένες, ή
αλλιώς πασίγνωστες (well-known), θύρες UDP και TCP ορίστηκαν αρχικά στο RFC-1700
(October 1994), ενώ στη συνέχεια, για λόγους πληρότητας και διαρκούς ενημέρωσης,
αποφασίστηκε να διατίθενται on-line από μία βάση δεδομένων που βρίσκεται στην
ιστοσελίδα http://www.iana.org/assignments/port-numbers (RFC-3232, January
2002).
176
0 16 31
δεδομένα
πεδία της ψευδοεπικεφαλίδας υπάρχουν στην επικεφαλίδα του πακέτου IP επί του οποίου
ενθυλακώνεται το μήνυμα UDP.
Η ψευδοεπικεφαλίδα χρησιμοποιείται για να εξακριβώνεται ότι το μήνυμα έφτασε
στον επιθυμητό προορισμό του. Για παράδειγμα, εάν η διεύθυνση προορισμού ενός
πακέτου IP αλλοιωθεί κατά τη μεταφορά του στο δίκτυο και, κατά συνέπεια, αυτό το
πακέτο παραδοθεί σε λανθασμένο προορισμό, τότε το περιεχόμενό του δεν θα προωθηθεί
για περαιτέρω επεξεργασία καθώς το σφάλμα μεταφοράς θα εντοπιστεί από το άθροισμα
ελέγχου UDP.
Τέλος, θα πρέπει να υπενθυμίσουμε το γεγονός ότι το άθροισμα ελέγχου στα πακέτα
IP υπολογίζεται με βάση τα περιεχόμενα της επικεφαλίδας IP (βλέπε Ενότητα 2.1.2).
Έτσι, το άθροισμα ελέγχου UDP αποτελεί το μοναδικό τρόπο εντοπισμού σφάλματος
μεταφοράς και γι’ αυτό προτείνεται να χρησιμοποιείται.
Σωστό Λάθος
δεν μεταφέρει bytes μέσω του δικτύου, αλλά ομαδοποιεί τα δεδομένα σε μεγαλύτερες
συλλογές χρησιμοποιώντας έναν ενταμιευτή (βλέπε Σχήμα 5.4). Αυτές οι συλλογές bytes
ονομάζονται τμήματα ή μηνύματα TCP (TCP segments). Τα μηνύματα TCP
ενθυλακώνονται σε πακέτα IP, τα οποία και μεταδίδονται στο δίκτυο. Στο άκρο του
παραλήπτη, το περιεχόμενο ενός ληφθέντος μηνύματος TCP τοποθετείται στον
ενταμιευτή της αντίστοιχης θύρας προορισμού. Από αυτόν τον ενταμιευτή η διεργασία
της εφαρμογής προορισμού διαβάζει τα ληφθέντα bytes σύμφωνα με το δικό της ρυθμό.
Πότε όμως αποστέλλονται τα bytes που έχουν συσσωρευτεί στον ενταμιευτή
αποστολής; Στο πρωτόκολλο TCP υπάρχουν τρεις μηχανισμοί που ενεργοποιούν την
αποστολή ενός μηνύματος: (α) όταν συσσωρευτούν πλήθος bytes ίσο ή μεγαλύτερο από
το μέγιστο επιτρεπτό μέγεθος τμήματος TCP (maximum segment size, MSS), (β) όταν η
εφαρμογή το ζητήσει, ενεργοποιώντας τη σχετική λειτουργία ώθησης (push) και (γ) κατά
περιοδικά χρονικά διαστήματα.
διεργασία διεργασία
εφαρμογής εφαρμογής
αποστολή λήψη
. bytes . bytes
. .
. .
TCP TCP
Σχήμα 5.4. Ο τρόπος με τον οποίο τo πρωτόκολλο TCP υποστηρίζει τη ροή bytes
μεταξύ πρωτοκόλλου και εφαρμογής,
πρωτόκολλα του Επιπέδου Σύνδεσης Δεδομένων. Και αυτό γιατί η σύνδεση μεταξύ των
δύο άκρων στο TCP επιτυγχάνεται συνήθως διαμέσου ενδιάμεσων δρομολογητών και
πλήθους συνδέσμων, ενώ στο χαμηλότερο επίπεδο μεσολαβεί μόνο ένας σύνδεσμος
σημείου με σημείο. Αυτό έχει ως αποτέλεσμα την ύπαρξη μεταβαλλόμενου χρόνου
μετάβασης μετ’ επιστροφής (Round Trip Time, RTT) στη σύνδεση TCP, αντί για σταθερού
RTT που συνήθως εξασφαλίζεται στις συνδέσεις των πρωτοκόλλων σύνδεσης
δεδομένων. Αυτή η μεταβλητότητα του χρόνου RTT επηρεάζει σημαντικά τη
συμπεριφορά του αλγορίθμου επανεκπομπής και επιβάλλει τη διαρκή προσαρμογή των
παραμέτρων του (και ιδιαίτερα του χρόνου προθεσμίας – timeout) στην τρέχουσα
κατάσταση του δικτύου.
Τέλος, το πρωτόκολλο TCP διαθέτει ένα μηχανισμό ελέγχου της ροής δεδομένων,
μέσω του οποίου ο παραλήπτης κόμβος μπορεί να ρυθμίσει το ρυθμό εκπομπής πακέτων
από τον αποστολέα κόμβο. Επιπρόσθετα, το TCP διαθέτει και ένα μηχανισμό ελέγχου της
συμφόρησης δικτύου, μέσω του οποίου ρυθμίζεται ο ρυθμός εκπομπής δεδομένων του
αποστολέα, όχι όμως για το φόβο υπερφόρτωσης του παραλήπτη κόμβου, αλλά για την
αποφυγή υπερφόρτωσης των ενδιάμεσων κόμβων του δικτύου.
Το πρωτόκολλο TCP ορίζεται, διορθώνεται και επεκτείνεται στα RFCs 793
(September 1981), 1122 (October 1989) και 1323 (May 1992) αντίστοιχα.
0 4 10 16 31
αριθμός σειράς
επιβεβαίωση
μήκος RESET
PUSH
URG
ACK
SYN
FIN
δεδομένα
3. Γιατί οι τερματικοί κόμβοι χρησιμοποιούν τον έλεγχο ροής του πρωτοκόλλου TCP:
(α) για την παρακολούθηση της κυκλοφορίας στο δίκτυο
(β) για να επιτύχουν ένα σταθερό ρυθμό στη διακίνηση δεδομένων μεταξύ αποστολέα
και παραλήπτη
(γ) για την προώθηση επειγόντων δεδομένων από τον αποστολέα στον παραλήπτη
(δ) για να αποφύγουν την υπερχείληση του ενταμιευτή λήψης στο άκρο του
παραλήπτη
4. Σε ποια θύρα TCP λαμβάνει δεδομένα ένας εξυπηρετητής telnet (εφαρμογή για την
απομακρυσμένη χρήση υπολογιστών);
(α) 21 (β) 23 (γ) 25 (δ) 80
5. Ποια ή ποιες από τις παρακάτω λειτουργίες δεν εκτελούνται από το TCP;
(α) δρομολόγηση κυκλοφορίας
(β) έλεγχος συμφόρησης δικτύου
(γ) επιβεβαίωση της ορθής λήψης μηνυμάτων
(δ) έλεγχος ορθότητας μηνυμάτων για την ύπαρξη σφαλμάτων μεταφοράς
καλών καλούμενος
(πελάτης) (εξυπηρετητής)
SYN
seq=
x
x+1
, ACK
q=y
SY N se
ACK
y+1
Σχήμα 5.6. Η διαδικασία τριών βημάτων για την εγκαθίδρυση μίας σύνδεσης TCP.
Βασικός σκοπός αυτής της διαδικασίας είναι να ενημερωθούν τα δύο άκρα για τον
αριθμό εκκίνησης της αρίθμησης την οποία θα ακολουθήσει το άλλο άκρο για τα
μεταφερόμενα δεδομένα του. Επίσης, με την επιτυχή ολοκλήρωση της διαδικασίας
186
εγκαθίδρυσης το κάθε άκρο γνωρίζει ότι μπορεί να αποστείλει δεδομένα στο άλλο άκρο
της σύνδεσης, αλλά και να περιμένει δεδομένα από αυτό.
Στο πρώτο βήμα της διαδικασίας εγκαθίδρυσης, ο πελάτης αποστέλλει ένα μήνυμα
TCP στον εξυπηρετητή, στο οποίο έχει ενεργοποιήσει το δυαδικό ενδείκτη SYN και έχει
προσδιορίσει τον αριθμό εκκίνησης της αρίθμησης των bytes θέτοντας την κατάλληλη
τιμή στο πεδίο «αριθμός σειράς» (seq = x).
Στη συνέχεια, ο εξυπηρετητής αποκρίνεται με ένα μήνυμα TCP προς τον πελάτη, στο
οποίο έχει ενεργοποιήσει τους ενδείκτες SYN και ACK. Εδώ προσδιορίζει τον αριθμό
εκκίνησης για τη δική του σειρά bytes (seq = y) και ταυτόχρονα επιβεβαιώνει τη σωστή
λήψη του προηγούμενου μηνύματος του αποστολέα θέτοντας στο πεδίο επιβεβαίωσης
την τιμή x + 1, υποδηλώνοντας έτσι ότι έχει λάβει χωρίς πρόβλημα τα bytes μέχρι τον
αριθμό σειράς x και ότι το επόμενο byte που περιμένει να λάβει θα πρέπει να έχει αριθμό
σειράς ίσο με x + 1.
Στο τρίτο και τελευταίο βήμα, ο πελάτης επιβεβαιώνει τη λήψη του αριθμού
εκκίνησης της σειράς δεδομένων του εξυπηρετητή (ACK y + 1).
Θα πρέπει να παρατηρήσουμε ότι, για λόγους απλότητας, δεν απεικονίζεται σ’ αυτό το
σχήμα η επανεκπομπή του μηνύματος που διενεργείται όταν ένας κόμβος δεν λάβει την
επιβεβαίωση λήψης του μέσα στη προκαθορισμένη προθεσμία.
Σχήμα 5.7. Το διάγραμμα μετάβασης κατάστασης για την εγκαθίδρυση και τον τερματισμό
μίας σύνδεσης TCP.
[Από το βιβλίο των Wright και Stevens (1995), “TCP/IP Illustrated, Volume 2: The Implementation”].
188
Η κατανόηση του διαγράμματος μετάβασης κατάστασης του TCP είναι εύκολη. Για
παράδειγμα, ας παρακολουθήσουμε τις μεταβάσεις κατάστασης που συμβαίνουν στον
πελάτη και στον εξυπηρετητή κατά την εκτέλεση της διαδικασίας εγκαθίδρυσης μίας
σύνδεσης TCP. Τα βέλη με τη διακεκομμένη γραμμή απεικονίζουν τη μετάβαση
καταστάσεων του εξυπηρετητή, ενώ τα βέλη με τη συνεχή γραμμή απεικονίζουν τη
μετάβαση καταστάσεων του πελάτη.
Και τα δύο άκρα ξεκινούν από την κατάσταση CLOSED. Όταν ξεκινήσει η εφαρμογή
του εξυπηρετητή, τότε ζητά από το TCP να μεταβεί στην κατάσταση LISTEN και να
περιμένει μία αίτηση προς εξυπηρέτηση. Όταν ο πελάτης αιτηθεί την εγκαθίδρυση
σύνδεσης με τον εξυπηρετητή, τότε το πρωτόκολλο TCP στο άκρο του μεταβαίνει στην
κατάσταση SYN_SENT και αποστέλλει ένα μήνυμα SYN στον εξυπηρετητή. Όταν αυτό
το μήνυμα SYN φτάσει στον εξυπηρετητή, τότε το TCP στο άκρο του μεταβαίνει στην
κατάσταση SYN_RCVD και αποστέλλει ένα μήνυμα SYN + ACK στον πελάτη. Η άφιξη
αυτού του μηνύματος στον πελάτη, αναγκάζει το πρωτόκολλό του να μεταβεί στην
κατάσταση ESTABLISHED (η οποία υποδηλώνει ότι ο πελάτης είναι έτοιμος να
αποστείλει δεδομένα) και να στείλει ένα μήνυμα ACK πίσω στον εξυπηρετητή. Τέλος, η
λήψη του ACK από τον εξυπηρετητή, οδηγεί το δικό του πρωτόκολλο στην κατάσταση
ESTABLISHED, γεγονός που υποδηλώνει ότι και ο εξυπηρετητής είναι έτοιμος να
στείλει δεδομένα μέσω της σύνδεσης.
Στον Πίνακα 5.1 απαριθμούνται όλες οι καταστάσεις που χρησιμοποιούνται στην
περιγραφή των διαδικασιών εγκαθίδρυσης και τερματισμού μίας σύνδεσης TCP (βλέπε
Σχήμα 5.7).
Πίνακας 5.1. Οι καταστάσεις που χρησιμοποιούνται στο διάγραμμα μετάβασης κατάστασης για
την εγκαθίδρυση και τον τερματισμό μίας σύνδεσης TCP.
Κατάσταση Περιγραφή
CLOSED Καμία σύνδεση δεν είναι ενεργή ή εκκρεμεί.
Η εφαρμογή του εξυπηρετητή ξεκίνησε και περιμένει αίτηση προς
LISTEN
εξυπηρέτηση.
SYN_RCVD Έφτασε αίτηση σύνδεσης. Περίμενε μήνυμα επιβεβαίωσης.
Η εφαρμογή ξεκίνησε την εγκαθίδρυση σύνδεσης με το απέναντι
SYN_SENT
άκρο.
ESTABLISHED Η κανονική κατάσταση μεταφοράς δεδομένων.
FIN_WAIT_1 Η εφαρμογή δήλωσε ότι επιθυμεί τον τερματισμό της σύνδεσης.
FIN_WAIT_2 Το άλλο άκρο συμφωνεί στον τερματισμό της σύνδεσης.
189
προορισμούς τους είναι ένα μέρος μόνο των πακέτων που έχουν αποσταλεί προς
μεταφορά, μειώνοντας έτσι σημαντικά τη διαμετακομιστική ικανότητα του δικτύου.
επιθυμητή συμπεριφορά
Ένας τρόπος εξόδου από την κατάσταση συμφόρησης είναι η ελάττωση του ρυθμού
αποστολής δεδομένων στο δίκτυο από εκείνους τους κόμβους στους οποίους έγινε ορατή
η δυσλειτουργία της συμφόρησης. Αφού μειωθεί η ποσότητα των δεδομένων που
εισάγεται στο δίκτυο, οι ενδιάμεσοι δρομολογητές θα έχουν την ευκαιρία να προωθήσουν
τα πακέτα που έχουν συσσωρευτεί στους ενταμιευτές των συνδέσμων τους και έτσι να
τερματίσουν τη συμφόρηση δικτύου. Με τον τερματισμό της συμφόρησης, οι κόμβοι
που είχαν επηρεαστεί, ερευνούν την ύπαρξη διαθέσιμου εύρους ζώνης στη σύνδεσή τους
και αρχίζουν σταδιακά να αυξάνουν την ποσότητα των δεδομένων που αποστέλλουν στο
δίκτυο επιθυμώντας να αυξήσουν την απόδοση της σύνδεσής τους.
Πώς διαπιστώνουν όμως οι κόμβοι την ύπαρξη συμφόρησης στο δίκτυο; Η απάντηση
σ’ αυτό είναι εύκολη: από την εκπνοή των χρόνων προθεσμίας. Πόσο ελαττώνουν το
ρυθμό αποστολής δεδομένων έτσι ώστε να αντιμετωπίσουν τη συμφόρηση; Πόσο
αυξάνουν το ρυθμό αποστολής μετά την καταστολή της συμφόρησης; Οι απαντήσεις στις
τελευταίες δύο ερωτήσεις δεν είναι προφανείς και δίδονται στις επόμενες παραγράφους.
λήψης φτάνουν εντός της προβλεπόμενης προθεσμίας και (β) το παράθυρο συμφόρησης
λαμβάνει τιμή μικρότερη του προκαθορισμένου κατωφλίου.
Αυτή η φάση του αλγορίθμου ελέγχου συμφόρησης δικτύου του TCP, όπου το
παράθυρο συμφόρησης αυξάνεται εκθετικά, καλείται «αργή εκκίνηση» (slow start). Με
την εφαρμογή της, ο ρυθμός μετάδοσης δεδομένων ξεκινά από μία μικρή τιμή στην
εκκίνηση μίας σύνδεσης (ίση με MSS ), αλλά στη συνέχεια η μετάδοση επιταχύνεται
RTT
ραγδαία.
Η φάση της αργής εκκίνησης τερματίζει όταν το παράθυρο συμφόρησης υπερβεί την
προκαθορισμένη τιμή κατωφλίου. Όταν σημειωθεί αυτή η υπέρβαση, το παράθυρο
συμφόρησης συνεχίζει να αυξάνεται, με γραμμικό όμως τρόπο και όχι με εκθετικό.
Συγκεκριμένα, εάν ο αποστολέας κόμβος λάβει επιβεβαίωση ορθής λήψης για όλα τα
μηνύματα που στάλθηκαν στο προηγούμενο παράθυρο συμφόρησης, τότε το TCP θεωρεί
ότι υπάρχει διαθέσιμος χώρος στο δίκτυο για την αποστολή περισσότερων δεδομένων και
αυξάνει το παράθυρο συμφόρησης κατά ποσότητα ίση με το μέγιστο μήκος μηνύματος
MSS (δηλαδή, εκτιμά ότι υπάρχει χώρος για την προσθήκη ενός ακόμα μηνύματος στο
παράθυρο των ανεπιβεβαίωτων μηνυμάτων). Αυτό έχει ως αποτέλεσμα την αύξηση του
παραθύρου συμφόρησης κατά MSS κάθε RTT δευτερόλεπτα. Αυτή η φάση του
αλγορίθμου καλείται «αποφυγή συμφόρησης» (congestion avoidance).
Η φάση της αποφυγής συμφόρησης συνεχίζεται για όσο χρονικό διάστημα ο
αποστολέας κόμβος λαμβάνει εμπρόθεσμες επιβεβαιώσεις λήψης από τον κόμβο
προορισμού. Όμως, καθώς το παράθυρο συμφόρησης, και κατά συνέπεια και ο ρυθμός
μετάδοσης δεδομένων, δεν μπορούν να αυξάνουν δια παντός χωρίς επίπτωση στην ομαλή
λειτουργία του δικτύου, κάποιος ενδιάμεσος δρομολογητής θα κορεστεί και θα απορρίψει
ένα από τα μεταφερόμενα πακέτα της σύνδεσης. Αυτή η απώλεια πακέτου θα γίνει ορατή
στον αποστολέα κόμβο από την εκπνοή του χρόνου προθεσμίας για τη λήψη του
σχετικού μηνύματος επιβεβαίωσης. Όταν λοιπόν ο αποστολέας κόμβος αντιληφθεί
απώλεια πακέτου, τότε θέτει ως τιμή κατωφλίου το μισό της τρέχουσας τιμής του
παραθύρου συμφόρησης και ξεκινά τη μετάδοση δεδομένων θέτοντας το μέγεθος του
παραθύρου συμφόρησης ίσο με ένα MSS. Στη συνέχεια ακολουθούνται οι μηχανισμοί της
αργής εκκίνησης και της αποφυγής συμφόρησης μέχρις ότου υπάρξει απώλεια πακέτου
στο δίκτυο κ.ο.κ.
197
Αν εξαιρέσουμε τη φάση της αργής εκκίνησης, παρατηρούμε ότι στο TCP υπάρχει μία
συνεχής εναλλαγή της γραμμικής αύξησης και της εκθετικής μείωσης του μεγέθους του
παραθύρου αποστολής ανεπιβεβαίωτων μηνυμάτων. Γι’ αυτό και ο αλγόριθμος ελέγχου
συμφόρησης δικτύου που υποστηρίζεται στο TCP καλείται συχνά και ως ο αλγόριθμος
της Προσθετικής Αύξησης / Πολλαπλασιαστικής Μείωσης (Additive Increase /
Multiplicative Decrease – AIMD).
Ο αλγόριθμος AIMD παρουσιάστηκε από τον Van Jacobson (1988) και υποστηρίζεται
πλέον από όλες τις υλοποιήσεις της στοίβας πρωτοκόλλων TCP/IP. Ένα πλήθος από
πιθανές βελτιώσεις του αρχικού αλγορίθμου του Van Jacobson περιγράφονται
συγκεντρωτικά στο RFC-2581 (April 1999).
Παράδειγμα 5.1
Έστω ότι το μέγιστο μέγεθος μηνύματος TCP, MSS, είναι ίσο με 1 KB και ότι η τιμή
του κατωφλίου τέθηκε αρχικά ίση με 8 × MSS . Η εξέλιξη του παραθύρου συμφόρησης
στο TCP, όταν η πρώτη εκπνοή του χρόνου προθεσμίας για τη λήψη μηνύματος
επιβεβαίωσης συμβαίνει κατά τη 10η μετάδοση δεδομένων, απεικονίζεται παραστατικά
στο Σχήμα 5.9.
Στην πρώτη μετάδοση, ο αποστολέας κόμβος μεταδίδει 1 μήνυμα TCP στο δίκτυο,
καθώς τόσα μηνύματα του επιτρέπει το παράθυρο συμφόρησης. Με την εμπρόθεσμη
επιβεβαίωση λήψης αυτού του πρώτου μηνύματος, ο αποστολέας κόμβος αποστέλλει 2
μηνύματα στο δίκτυο. Η εκθετική αύξηση στο πλήθος των ανεπιβεβαίωτων μηνυμάτων
που μεταδίδει ο αποστολέας κόμβος στο δίκτυο συνεχίζεται μέχρι την 4η μετάδοση, όπου
το παράθυρο συμφόρησης συναντά το κατώφλι.
198
Από την 5η μετάδοση και μέχρι τη 10η μετάδοση, η αύξηση στο πλήθος των
ανεπιβεβαίωτων μηνυμάτων που επιτρέπεται να αποστέλλονται στο δίκτυο είναι
γραμμική. Παρατηρήστε ότι στη 10η μετάδοση το μέγεθος του παραθύρου συμφόρησης
είναι ίσο με 14 × MSS .
Μετά τη 10η μετάδοση όμως, έχουμε απώλεια πακέτου. Τότε, το κατώφλι λαμβάνει
14
την τιμή × MSS = 7 × MSS και το παράθυρο συμφόρησης τίθεται ίσο με 1× MSS .
2
Έτσι, στην 11η μετάδοση, ο αποστολέας κόμβος θα μεταδώσει 1 μήνυμα TCP στο δίκτυο
κ.ο.κ.
16
εκπνοή
χρόνου προθεσμίας
14
12
Μέγεθος παραθύρου συμφόρησης
10
(σε Kbytes)
κατώ φλι
8
κατώ φλι
0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Αριθμός μετάδοσης
Σχήμα 5.9. Η εξέλιξη του παραθύρου συμφόρησης στο TCP για το Παράδειγμα 5.1.
(α) Ποια τα μεγέθη του παραθύρου συμφόρησης μετά από 4, 8, 16 και 32 επιτυχείς
μεταδόσεις δεδομένων; (ως επιτυχή χαρακτηρίζουμε μία μετάδοση κατά την οποία έχουν
επιβεβαιωθεί οι λήψεις όλων των μηνυμάτων TCP που την απαρτίζουν)
(β) Εάν απωλεσθεί ένα πακέτο μετά από 4 επιτυχείς μεταδόσεις, ποιο θα είναι το
μέγεθος του παραθύρου συμφόρησης κατά την 8η μετάδοση από την αρχική απώλεια
πακέτου, υποθέτοντας ότι όλες οι υπόλοιπες μεταδόσεις ήταν επιτυχείς;
αποστολέας παραλήπτης
πακέτο #1
πακέτο #2
πακέτο #3
ACK #1
πακέτο #4 X
ACK #2
ACK #2
πακέτο #5
πακέτο #6
ACK #2
ACK #2
επαναμετάδοση πακέτου #3
ACK #6
Σχήμα 5.10. Ο τρόπος λειτουργίας του μηχανισμού της γρήγορης επαναμετάδοσης στο
πρωτόκολλο TCP.
απώλεια πακέτου, οπότε και θα μειωθεί στο μισό. Αν εφαρμόζεται ο μηχανισμός της
γρήγορης ανάκαμψης και οι απώλειες πακέτων εμφανίζονται περιοδικά, τότε η
συμπεριφορά του παραθύρου συμφόρησης TCP απεικονίζεται στο Σχήμα 5.11 και
καλείται συχνά «οδοντωτό πριόνι» (saw-tooth) λόγω του χαρακτηριστικού σχήματός της.
μέγεθος παραθύρου συμφόρησης (σε MSS)
W
2
χρόνος
W W 3W 2W (σε RTT)
2 2
Tav =
( 0, 75 × W × MSS ) (5.5)
RTT
8
⇒W ≈ (5.6)
3p
5 ms 50 ms 5 ms
A R1 R2 B
Σύνοψη Κεφαλαίου
• Το πρωτόκολλο UDP (User Datagram Protocol) είναι ένα πολύ απλό πρωτόκολλο
Επιπέδου Μεταφοράς, καθώς υλοποιεί μόνο έναν μηχανισμό για την ανταλλαγή
αυτοδύναμων πακέτων μεταξύ των εφαρμογών υπολογιστών σ’ ένα δίκτυο IP και
διενεργεί έναν περιορισμένο έλεγχο εντοπισμού σφαλμάτων μεταφοράς.
• Το UDP χρησιμοποιείται ευρέως από εφαρμογές με μικρή ανοχή στην καθυστέρηση
μεταφοράς, όπως π.χ. η διανομή εικόνας/ήχου (video/audio streaming).
• Το πρωτόκολλο TCP (Transmission Control Protocol) είναι ένα πολύπλοκο
πρωτόκολλο μεταφοράς που προσφέρει στα ανώτερα επίπεδα: (α) εξασφαλισμένη
παράδοση μηνυμάτων, (β) τήρηση της σειράς αποστολής των μηνυμάτων κατά την
παράδοσή τους στον τελικό προορισμό, (γ) συγχρονισμό μεταξύ του αποστολέα και
του παραλήπτη, (δ) διαχωρισμό των διαφορετικών προορισμών σ’ ένα κόμβο, (ε)
έλεγχο της ροής δεδομένων του αποστολέα από τον παραλήπτη και (στ) έλεγχο της
συμφόρησης του δικτύου.
• Το TCP είναι το δημοφιλέστερο και το πιο ευρέως χρησιμοποιούμενο πρωτόκολλο
Επιπέδου Μεταφοράς στις μέρες μας και χρησιμοποιείται από εφαρμογές που δεν
επιδέχονται απώλεια πακέτων κατά τη μεταφορά, όπως π.χ. η μεταφορά αρχείων ή το
ηλεκτρονικό ταχυδρομείο.
• Στα πρωτόκολλα UDP και TCP, η επιλογή μίας εκ των διαφορετικών ενεργών
εφαρμογών σ’ έναν κόμβο ως ο τελικός προορισμός ενός πακέτου IP διενεργείται
έμμεσα με τη χρήση των «θυρών» πρωτοκόλλου.
• Το άθροισμα ελέγχου που υπάρχει στις επικεφαλίδες UDP και TCP καλύπτει τόσο τα
περιεχόμενα της επικεφαλίδας, όσο και τα δεδομένα του μηνύματος από σφάλματα
μεταφοράς.
205
Βιβλιογραφία
Τα δύο βιβλία του Stevens (1994, 1995), με γενικό τίτλο “TCP/IP Illustrated”,
πιστεύουμε ότι είναι από τα πιο καλογραμμένα και πλήρη βιβλία για την οικογένεια
πρωτοκόλλων TCP/IP και τα συστήνουμε ανεπιφύλακτα ως συμπληρωματικό κείμενο
του Κεφαλαίου.
Εξαιρετικές αναφορές επίσης αποτελούν και βιβλία των Peterson και Davie (2000),
Comer (1995) και Tanenbaum (1996). Το βιβλίο αυτό έχει μεταφραστεί στα Ελληνικά
από τους Β. Στυλιανάκη, Ε. Συκά και Μ. Θεολόγου (2000).
Τέλος, για ιστορικούς και μόνο λόγους, πιστεύουμε ότι αξίζει να ξεφυλλίσετε τα RFCs
768 (August 1980) και 793 (September 1981), με τα οποία υποβλήθηκαν για τυποποίηση
τα πρωτόκολλα UDP και TCP αντίστοιχα. Τα RFCs διατίθεται ελεύθερα στον Παγκόσμιο
Ιστό (http://www.rfc-editor.org).
Σωστό Λάθος
θύρα του προορισμού (TCP 80). Γιατί όμως να είναι ίδιες και οι
θύρες πηγής; Παρόλο που η εφαρμογή είναι η ίδια (πρόγραμμα
περιήγησης στον Ιστό), το λειτουργικό σύστημα του υπολογιστή
Β αποδίδει δυναμικά τις θύρες πηγής στις εφαρμογές πελάτες,
φροντίζοντας πάντα να χαρακτηρίζει μοναδικά μία επικοινωνία
με την προαναφερόμενη τετράδα.
θύρες πρωτοκόλλου
μεταφοράς
UDP
άφιξη πακέτου
Αν οι απαντήσεις σας και η αιτιολογία τους ταιριάζουν με τις παραπάνω, τότε πιστεύω
ότι έχετε κατανοήσει επαρκώς το πρωτόκολλο μεταφοράς UDP και μπορείτε να
210
3. Με τον έλεγχο ροής του TCP, ο παραλήπτης κόμβος μπορεί να μειώσει το ρυθμό
μετάδοσης δεδομένων του αποστολέα, έτσι ώστε να αποφύγει την υπερχείλιση του
ενταμιευτή λήψης που διαθέτει. Σταθερός ρυθμός στη διακίνηση δεδομένων δεν είναι
βέβαιο ότι μπορεί να επιτευχθεί, καθώς δεν γνωρίζουμε εάν υπάρχουν πάντα διαθέσιμα
δεδομένα προς μετάδοση. Η προώθηση επειγόντων δεδομένων διενεργείται με μία ειδική
διαδικασία ώθησης αυτών, η οποία περιγράφεται στην Ενότητα 5.2.2, και όχι με τον
έλεγχο ροής. Τέλος, η παρακολούθηση της κυκλοφορίας στο δίκτυο είναι ένα σύνθετο
ζήτημα και διενεργείται με άλλους μηχανισμούς και πρωτόκολλα και όχι με τον έλεγχο
ροής του TCP. Έτσι, σωστή επιλογή είναι μόνο η (δ).
4. Η εφαρμογή telnet έχει αντιστοιχηθεί στη θύρα TCP 23. Στις θύρες 21, 25 και 80
έχουν αντιστοιχηθεί οι εφαρμογές FTP, SMTP και HTTP αντίστοιχα. Σωστή επιλογή
λοιπόν είναι η (β).
επιτυγχάνεται με την ύπαρξη του αθροίσματος ελέγχου στην επικεφαλίδα TCP, το οποίο
καλύπτει τόσο την επικεφαλίδα, όσο και τα δεδομένα του μηνύματος TCP. Κατά
συνέπεια, σωστή επιλογή είναι η (α).
6. Σωστές επιλογές είναι οι (α) και (γ). Επίσης, ένα μήνυμα TCP αποστέλλεται και
όταν τα δεδομένα έχουν καλύψει το μέγιστο επιτρεπτό μέγεθος μηνύματος TCP. Δεν
υπάρχει άμεσος τρόπος για να ζητήσει ο παραλήπτης τη μετάδοση των δεδομένων που
υπάρχουν συσσωρευμένα στον ενταμιευτή του αποστολέα, ενώ τα επείγοντα δεδομένα
παρακάμπτουν τα υπάρχοντα bytes στον ενταμιευτή αποστολής, αλλά μεταδίδονται μόνο
εάν ο αποστολέας ενεργοποιήσει τη σχετική λειτουργία ώθησης.
Εάν έχετε δώσει τις σωστές επιλογές στις παραπάνω ερωτήσεις, τότε είμαστε σε καλό
δρόμο !
πρέπει να ξεκινήσει από την αρχή τη διαδικασία εγκαθίδρυσης της σύνδεσης με τον
εξυπηρετητή.
Αν όμως απορριφθεί το μήνυμα που αντιστοιχεί στο τρίτο σκέλος της διαδικασίας
εγκαθίδρυσης, η σύνδεση συνεχίζει να λειτουργεί κανονικά. Και αυτό γιατί το άκρο του
πελάτη βρίσκεται ήδη στην κατάσταση ESTABLISHED και έτσι η εφαρμογή του μπορεί
να αποστείλει δεδομένα στον εξυπηρετητή μόλις αυτά γίνουν διαθέσιμα. Σε κάθε ένα από
αυτά τα μηνύματα TCP που περιέχουν δεδομένα της εφαρμογής πελάτη είναι
ενεργοποιημένος ο ενδείκτης ACK. Στο δε πεδίο «επιβεβαίωσης» του μηνύματος έχει
τεθεί η κατάλληλη τιμή, έτσι ώστε να πληροφορηθεί το άκρο του εξυπηρετητή τη σειρά
του byte που περιμένει να λάβει ο πελάτης στο επόμενο μήνυμα. Αυτή η πληροφορία
επισυνάπτεται σε κάθε μήνυμα TCP, ακόμα και αν επαναλαμβάνεται η ίδια τιμή.
πελάτης εξυπηρετητής
ACK
ενημέρωση της εφαρμογής εξυπηρετητή
για τον τερματισμό σύνδεσης και
λήψη της κατάλληλης εντολής
FIN τερματισμού από αυτήν
ACK
χρονικό διάστημα αναμονής
πριν τον τερματισμό της σύνδεσης
Σχήμα 5.10. Η διαδικασία τερματισμού μίας σύνδεσης TCP, όταν αυτή ξεκινά από το
άκρο του πελάτη.
Στο άκρο του πελάτη, όταν το πρωτόκολλο TCP λάβει μία εντολή τερματισμού της
σύνδεσης, τότε αποστέλλει ένα μήνυμα FIN στον εξυπηρετητή.
213
Όταν ο εξυπηρετητής λάβει το μήνυμα FIN, τότε ενημερώνει την εφαρμογή του για
τον τερματισμό της σύνδεσης και αποστέλλει το σχετικό μήνυμα επιβεβαίωσης ACK
πίσω στον πελάτη.
Η εφαρμογή του εξυπηρετητή, αφού επεξεργαστεί το μήνυμα τερματισμού από το
άκρο του πελάτη και εκτελέσει τις προβλεπόμενες ενέργειες (π.χ. ενημέρωση αρχείων
καταγραφής ή διαχειριστών), δίδει με τη σειρά του εντολή στο πρωτόκολλο TCP του
εξυπηρετητή να τερματίσει το δικό του άκρο της σύνδεσης.
Έτσι, ο εξυπηρετητής συντάσσει και αποστέλλει στον πελάτη το δικό του μήνυμα
FIN, το οποίο και επιβεβαιώνεται από τον πελάτη. Με τη λήψη αυτής της επιβεβαίωσης,
τερματίζεται η σύνδεση στο άκρο του εξυπηρετητή.
Εδώ θα πρέπει να παρατηρήσουμε την ύπαρξη μίας κατάστασης αναμονής
(TIME_WAIT) του πρωτοκόλλου TCP στο άκρο του πελάτη. Εκεί, το πρωτόκολλο
περιμένει για χρονικό διάστημα ίσο με το διπλάσιο του χρόνου ζωής ενός πακέτου IP
πριν προχωρήσει σε τερματισμό της σύνδεσης. Ο λόγος ύπαρξης αυτής της κατάστασης
αναμονής είναι η προστασία της αξιοπιστίας του πρωτοκόλλου στην ειδική περίπτωση
όπου χάνεται το μήνυμα επιβεβαίωσης προς τον εξυπηρετητή. Στην περίπτωση απώλειας
αυτού του μηνύματος ACK, ο εξυπηρετητής αποστέλλει ξανά το ανεπιβεβαίωτο μήνυμα
FIN μετά από κάποιο χρονικό διάστημα προθεσμίας. Εάν ο πελάτης τερμάτιζε τη
σύνδεσή του νωρίτερα (π.χ. μετά από την επιβεβαίωση του δικού του μηνύματος FIN),
τότε είναι πιθανό να ανοίξει στη συνέχεια μία νέα σύνδεση με την ίδια χαρακτηριστική
τετράδα όπως και η προηγούμενη, η οποία όμως θα τερματιστεί απρόβλεπτα με την
έλευση του καθυστερημένου μηνύματος FIN από την προηγούμενη σύνδεση…
Αν το χρονοδιάγραμμα που σχεδιάσατε είναι ίδιο μ’ αυτό του Σχήματος 5.10, τότε
έχετε κατανοήσει σε ικανοποιητικό βαθμό το διάγραμμα μετάβασης κατάστασης του
TCP και σας αξίζουν συγχαρητήρια ! Αν όχι, μην απογοητεύεστε. Το TCP είναι ένα
πολύπλοκο πρωτόκολλο, που απαιτεί σημαντικό χρόνο μελέτης για την πλήρη
κατανόησή του.
Πίνακας 5.1. Το απαιτούμενο μέγεθος παραθύρου για την πλήρη αξιοποίηση συνδέσμου
όταν RTT = 100ms.
E1 (2 Mbps) 25 KB
Από τα στοιχεία του Πίνακα 5.1 παρατηρούμε ότι, για RTT = 100 ms, το πρωτόκολλο
TCP αδυνατεί να αξιοποιήσει πλήρως συνδέσμους E3 ή ταχύτερους, λόγω του
περιορισμού που έχει στο μέγεθος παραθύρου. Η λύση σ’ αυτό το πρόβλημα δόθηκε με
την αλλαγή της μονάδας μέτρησης του παραθύρου και του αριθμού σειράς. Αντί λοιπόν
αυτά τα πεδία να μετρώνται σε bytes, δόθηκε η δυνατότητα στα δύο άκρα μίας σύνδεσης
215
να συμφωνήσουν εξ’ αρχής σε μία διαφορετική μονάδα μέτρησης, πολλαπλάσια του byte
(π.χ. οκτάδα ή δεκαεξάδα bytes), επιτυγχάνοντας με τον τρόπο αυτό παράθυρα μεγέθους
μέχρι 230 bytes (RFC-1323). Αυτή η συμφωνία επιτυγχάνεται κατά τη διαδικασία
εγκαθίδρυσης της μεταξύ τους σύνδεσης και η απαραίτητη πληροφορία περιλαμβάνεται
στις προαιρετικές επιλογές της επικεφαλίδας TCP.
Με απευθείας εφαρμογή της Σχέσης (5.4) υπολογίζουμε τη νέα τιμή του χρόνου
προθεσμίας, TimeOut,
TimeOut = 61, 776 + 4 × 21, 44 = 147,536 msec
Εξαιτίας του υπολογιστικού φόρτου που εισάγει ο αλγόριθμος εκτίμησης του RTT
όταν εφαρμόζεται σε κάθε μεταδιδόμενο πακέτο, στην πραγματικότητα ο
προσαρμοστικός αλγόριθμος υπολογισμού του χρόνου προθεσμίας εφαρμόζεται επί ενός
δείγματος των μεταδιδομένων πακέτων, το οποίο επιλέγεται έτσι ώστε τα
δειγματοληφθέντα πακέτα να απέχουν χρονικά μεταξύ τους ένα προκαθορισμένο
διάστημα (π.χ. 500 msec).
216
w2 = 2 × w1 = 2 × MSS = 1 KB
[εκθετική αύξηση γιατί
w3 = 2 × w2 = 4 × MSS = 2 KB
wi −1 < threshold ]
w4 = 2 × w3 = 8 × MSS = 4 KB
w2 = 2 × w1 = 2 × MSS = 1 KB
[εκθετική αύξηση γιατί
w3 = 2 × w2 = 4 × MSS = 2 KB
wi −1 < threshold ]
w4 = 2 × w3 = 8 × MSS = 4 KB
217
Ο χρόνος μετάβασης μετ’ επιστροφής, RTT , για τη σύνδεση AB του Σχήματος 5.12.
θα είναι ίσος με
Γνωρίζοντας ότι MSS = 1024 Bytes = 1 KB , με απευθείας εφαρμογή της Σχέσης (5.7)
μπορούμε να υπολογίσουμε το μέσο ρυθμό μετάδοσης δεδομένων στη σύνδεση AB.
Έτσι,
1, 22 MSS 1, 22 1 KB 10
Tav = ⋅ = ⋅ ≅ KBps
p RTT p 0,120 sec p
(α) Εάν η πιθανότητα απώλειας πακέτων, p , είναι ίση με 10−2 , δηλαδή αν χάνουμε 1
πακέτο κάθε φορά που μεταδίδουμε 100 πακέτα στο δίκτυο, τότε θα έχουμε
10
Tav ≅ KBps = 100 KBps
10−2
(γ) Τέλος, εάν p = 10−6 , δηλαδή αν χάνουμε μόλις 1 πακέτο στα 1.000.000
εκπεμπόμενα πακέτα, τότε θα έχουμε
10
Tav ≅ KBps = 10000 KBps ≈ 10 MBps
10−6