You are on page 1of 48

170

Κεφάλαιο 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. O μηχανισμός διαχωρισμού των διαφορετικών προορισμών σε έναν κόμβο


υλοποιείται στο Επίπεδο Μεταφοράς.

Έστω για παράδειγμα το διαδίκτυο του Σχήματος 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, το οποίο θα παρουσιάσουμε στην Ενότητα 5.1, και με το TCP,
τις βασικότερες λειτουργίες του οποίου θα περιγράψουμε στην Ενότητα 5.2.

Ενότητα 5.1 ΤΟ ΠΡΩΤΟΚΟΛΛΟ UDP

Προσδοκώμενα Αποτελέσματα: Όταν θα έχετε μελετήσει αυτήν την ενότητα, θα


μπορείτε να :
• παρουσιάσετε τον τρόπο με τον οποίο τα πρωτόκολλα μεταφοράς του
Διαδικτύου διαχωρίζουν τους διαφορετικούς προορισμούς πακέτων σε έναν
κόμβο
• ορίσετε τις θύρες στα πρωτόκολλα μεταφοράς του Διαδικτύου και να
περιγράψετε τον τρόπο αντιστοίχησης των θυρών με τις ενεργές διεργασίες
στους υπολογιστές
• διατυπώσετε τις τέσσερις παραμέτρους που απαιτούνται για το μοναδικό
χαρακτηρισμό μίας επικοινωνίας μεταξύ εφαρμογών υπολογιστών στο
Διαδίκτυο
• περιγράψετε με αδρές γραμμές τη μορφή των μηνυμάτων UDP
• ορίσετε την ψευδοεπικεφαλίδα UDP και να εξηγήσετε τη χρησιμότητά της.

Το πρωτόκολλο UDP (User Datagram Protocol) είναι ένα πολύ απλό πρωτόκολλο
μεταφοράς, καθώς υλοποιεί μόνο έναν μηχανισμό για την ανταλλαγή αυτοδύναμων
πακέτων μεταξύ των εφαρμογών υπολογιστών σ’ ένα δίκτυο IP, χωρίς να απαιτείται η
εγκαθίδρυση σύνδεσης μεταξύ των υπολογιστών που φιλοξενούν αυτές τις εφαρμογές.
Έτσι, αν εξαιρέσουμε έναν περιορισμένο έλεγχο εντοπισμού σφαλμάτων μεταφοράς,
το πρωτόκολλο UDP δεν εκτελεί καμία ενέργεια για τη βελτίωση της (αναξιόπιστης)
υπηρεσίας μεταφοράς δεδομένων που προσφέρει το IP, ούτε ελέγχει τη ροή των
δεδομένων μεταξύ των τερματικών κόμβων.
Εξαιτίας όμως της απλότητάς του και των περιορισμένων λειτουργιών του, το
πρωτόκολλο UDP επιβαρύνει αμελητέα το χρόνο μεταφοράς των πακέτων από τον
αποστολέα στον παραλήπτη, γι’ αυτό και χρησιμοποιείται ευρέως από εφαρμογές με
μικρή ανοχή στην καθυστέρηση μεταφοράς, όπως π.χ. η διανομή εικόνας/ήχου
(video/audio streaming).
174

5.1.1 Οι θύρες πρωτοκόλλου μεταφοράς


Όπως αναφέραμε στις εισαγωγικές παρατηρήσεις του Κεφαλαίου, για την επικοινωνία
των εφαρμογών υπολογιστών υλοποιείται στο Επίπεδο Μεταφοράς ένα σχήμα
προσδιορισμού της κατάλληλης διεργασίας στην οποία πρέπει να προωθηθεί το
περιεχόμενο ενός αφιχθέντος πακέτου για περαιτέρω επεξεργασία.
Στο πρωτόκολλο UDP, όπως και στο πρωτόκολλο TCP, ο προσδιορισμός της
κατάλληλης διεργασίας ως ο τελικός προορισμός ενός πακέτου IP διενεργείται έμμεσα με
τη χρήση των «θυρών» πρωτοκόλλου. Η θύρα είναι ένα αφηρημένο σημείο προορισμού,
το οποίο χαρακτηρίζεται μοναδικά με ένα θετικό ακέραιο αριθμό εύρους 16 bit. Με
ευθύνη του λειτουργικού συστήματος, κάθε διεργασία μπορεί να αντιστοιχηθεί σε μία
από τις θύρες του πρωτοκόλλου έτσι ώστε να λαμβάνει και να αποστέλλει δεδομένα σ’
αυτή.

WWW
e-mail e-mail WWW WWW θύρα
Επίπεδο Εφαρμογής πρωτοκόλλου
p1 p2 p1 p2 p3 p1 p2 μεταφοράς

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

Α Β Γ διεύθυνση
δικτύου
Επίπεδο Δικτύου

Σχήμα 5.2. Η χρήση των θυρών πρωτοκόλλου μεταφοράς.

Η χρήση των θυρών πρωτοκόλλου μεταφοράς απεικονίζεται παραστατικά στο Σχήμα


5.2. Έστω λοιπόν 3 κόμβοι δικτύου, οι οποίοι έχουν χαρακτηριστεί μοναδικά με τις
διευθύνσεις Α, Β και Γ. Στον υπολογιστή Α εκτελούνται δύο εφαρμογές (π.χ. ένας
πελάτης WWW και ένας εξυπηρετητής e-mail), οι οποίες επικοινωνούν με δύο ενεργές
εφαρμογές του υπολογιστή Β (π.χ. έναν εξυπηρετητή WWW και έναν πελάτη e-mail
αντίστοιχα). Κατά την εκκίνηση των διεργασιών των εφαρμογών, το λειτουργικό
σύστημα του υπολογιστή τις έχει αντιστοιχήσει με μία θύρα του πρωτοκόλλου
μεταφοράς. Για παράδειγμα, ο πελάτης WWW του υπολογιστή Α έχει αντιστοιχηθεί στη
θύρα p1, ενώ ο εξυπηρετητής WWW του υπολογιστή Β έχει αντιστοιχηθεί στη θύρα p2.
175

Εάν τα πακέτα κυκλοφορίας που αποστέλλει ο πελάτης WWW του υπολογιστή Α


έχουν ως τελικό προορισμό τη θύρα p2 του υπολογιστή Β και εάν οι αποκρίσεις του Β
προορίζονται στη θύρα p1 του Α, τότε η επικοινωνία των εφαρμογών πελάτη –
εξυπηρετητή WWW επιτυγχάνεται χωρίς να επηρεάζεται από τα πακέτα κυκλοφορίας
που ανταλλάσσουν άλλες εφαρμογές μεταξύ των δύο υπολογιστών Α και Β.
Κατά συνέπεια, ένα κανάλι επικοινωνίας μεταξύ εφαρμογών υπολογιστών μπορεί να
χαρακτηριστεί μοναδικά στα όρια ενός δικτύου προσδιορίζοντας τα δύο άκρα του με τα
ζεύγη (θύρα πρωτοκόλλου μεταφοράς πηγής, διεύθυνση δικτύου πηγής) και (θύρα
πρωτοκόλλου μεταφοράς προορισμού, διεύθυνση δικτύου προορισμού) αντίστοιχα. Το
ζεύγος (θύρα πρωτοκόλλου μεταφοράς, διεύθυνση δικτύου) ονομάζεται υποδοχή (socket).
Έτσι, χρησιμοποιώντας αυτόν το συμβολισμό, μπορούμε να προσδιορίσουμε
μονοσήμαντα ένα κανάλι επικοινωνίας μεταξύ εφαρμογών από τις ταυτότητες των
υποδοχών στα δύο άκρα του, δηλαδή με το ζεύγος (υποδοχή πηγής, υποδοχή
προορισμού).

Δεσμευμένες θύρες
Πώς όμως γίνεται η αντιστοίχηση των θυρών σε διεργασίες; Αν αυτή γινόταν τυχαία,
τότε πως θα γνώριζαν οι υπολογιστές ποιες θύρες θα πρέπει να προσπελάσουν για την
εκπλήρωση μίας υπηρεσίας; Για παράδειγμα, πως θα γνώριζε ένας πελάτης 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

5.1.2 Η μορφή των μηνυμάτων UDP


Στο Σχήμα 5.3 απεικονίζεται η μορφή των μηνυμάτων UDP. Το μήκος του κάθε
πεδίου δίδεται σε bits.
Παρατηρούμε ότι ένα μήνυμα UDP αποτελείται από δύο μέρη: από την επικεφαλίδα
και από τα δεδομένα. Η επικεφαλίδα χωρίζεται σε τέσσερα τμήματα, εύρους 16 bits το
καθένα. Τα δύο πρώτα είναι η θύρα UDP από την οποία πηγάζουν τα δεδομένα και η
θύρα UDP του προορισμού αντίστοιχα. Η θύρα UDP πηγής επισυνάπτεται στο
μεταφερόμενο μήνυμα έτσι ώστε η εφαρμογή του προορισμού να πληροφορηθεί σε ποια
θύρα του αποστολέα να επιστρέψει την απόκρισή της.
Το τρίτο τμήμα της επικεφαλίδας UDP είναι το μήκος του μηνύματος UDP,
μετρούμενο σε bytes, στο οποίο προσμετρείται και το μήκος της επικεφαλίδας.
Το τέταρτο και τελευταίο τμήμα της επικεφαλίδας είναι ένα άθροισμα ελέγχου, που
χρησιμοποιείται για τον έλεγχο σφαλμάτων μεταφοράς. Αυτό το πεδίο είναι προαιρετικό
και συνήθως αποφεύγεται να χρησιμοποιείται σε δίκτυα με αμελητέα πιθανότητα
εμφάνισης σφαλμάτων μεταφοράς, αποφεύγοντας έτσι την εισαγωγή πρόσθετης

0 16 31

θύρα UDP πηγής θύρα UDP προορισμού

μήκος μηνύματος UDP άθροισμα ελέγχου

δεδομένα

Σχήμα 5.3. Η μορφή των μηνυμάτων UDP

καθυστέρησης για τον υπολογισμό του αθροίσματος ελέγχου.


Υπολογισμός του αθροίσματος ελέγχου UDP
Το άθροισμα ελέγχου στα μηνύματα UDP υπολογίζεται από τα περιεχόμενα της
επικεφαλίδας, από τα δεδομένα του μηνύματος και από τα περιεχόμενα μίας
ψευδοεπικεφαλίδας (pseudoheader), η οποία δημιουργείται αποκλειστικά και μόνο γι’
αυτόν τον υπολογισμό. Η ψευδοεπικεφαλίδα αποτελείται από τη διεύθυνση δικτύου της
πηγής, από τη διεύθυνση δικτύου του προορισμού, από τον δεσμευμένο αριθμό
πρωτοκόλλου (17 για το UDP) και από το μήκος του μηνύματος UDP. Τα τρία πρώτα
177

πεδία της ψευδοεπικεφαλίδας υπάρχουν στην επικεφαλίδα του πακέτου IP επί του οποίου
ενθυλακώνεται το μήνυμα UDP.
Η ψευδοεπικεφαλίδα χρησιμοποιείται για να εξακριβώνεται ότι το μήνυμα έφτασε
στον επιθυμητό προορισμό του. Για παράδειγμα, εάν η διεύθυνση προορισμού ενός
πακέτου IP αλλοιωθεί κατά τη μεταφορά του στο δίκτυο και, κατά συνέπεια, αυτό το
πακέτο παραδοθεί σε λανθασμένο προορισμό, τότε το περιεχόμενό του δεν θα προωθηθεί
για περαιτέρω επεξεργασία καθώς το σφάλμα μεταφοράς θα εντοπιστεί από το άθροισμα
ελέγχου UDP.
Τέλος, θα πρέπει να υπενθυμίσουμε το γεγονός ότι το άθροισμα ελέγχου στα πακέτα
IP υπολογίζεται με βάση τα περιεχόμενα της επικεφαλίδας IP (βλέπε Ενότητα 2.1.2).
Έτσι, το άθροισμα ελέγχου UDP αποτελεί το μοναδικό τρόπο εντοπισμού σφάλματος
μεταφοράς και γι’ αυτό προτείνεται να χρησιμοποιείται.

Άσκηση Αυτοαξιολόγησης 5.1


Απαντήστε με σωστό ή λάθος στις παρακάτω προτάσεις:

Σωστό Λάθος

Όλα τα μηνύματα UDP ακολουθούν την ίδια διαδρομή δικτύου


από τον αποστολέα στον παραλήπτη κόμβο.

Το ελάχιστο μήκος ενός μηνύματος UDP είναι 0 bytes, ενώ το


μεγαλύτερο 64 Kbytes.

Οι διευθύνσεις IP του αποστολέα και του παραλήπτη κόμβου


περιλαμβάνονται στην επικεφαλίδα ενός μηνύματος UDP.

Η εφαρμογή FTP (για τη μεταφορά αρχείων μεταξύ


υπολογιστών) έχει αντιστοιχηθεί στις θύρες TCP 20 και 21.

Το άθροισμα ελέγχου UDP διενεργεί τον ίδιο έλεγχο με το


άθροισμα ελέγχου IP, γι’ αυτό και η χρήση του είναι
προαιρετική.

Γνωρίζοντας ότι μία θύρα πρωτοκόλλου μεταφοράς συνήθως


υλοποιείται από το λειτουργικό σύστημα του υπολογιστή ως μία
ουρά μηνυμάτων πεπερασμένου μήκους, μπορούμε να
διατυπώσουμε τον ισχυρισμό ότι είναι δυνατή η απόρριψη
μηνυμάτων UDP στο άκρο του παραλήπτη κόμβου λόγω
υπερχείλισης του ενταμιευτή της αντίστοιχης ουράς.

Το UDP δεν αναλαμβάνει καμία επανορθωτική ενέργεια εάν


εντοπίσει σφάλμα μεταφοράς σ’ ένα μήνυμά του.
178

Έστω δύο υπολογιστές Α και Β, όπου στον υπολογιστή Α


φιλοξενείται ένας δικτυακός τόπος. Ο χρήστης του υπολογιστή
Β δεν μπορεί να περιηγηθεί ταυτόχρονα από δύο ή περισσότερες
διαφορετικές εφαρμογές πελάτη στο δικτυακό τόπο του Α γιατί
έτσι παραβιάζεται ο κανόνας της μοναδικότητας της τετράδας
〈θύρα πηγής, διεύθυνση πηγής, θύρα προορισμού, διεύθυνση
προορισμού〉.

Η δρομολόγηση των πακέτων είναι μία από τις βασικές


λειτουργίες των πρωτοκόλλων του Επιπέδου Μεταφοράς του
δικτύου.

Κατά τον υπολογισμό του αθροίσματος ελέγχου UDP, το μήκος


του μηνύματος UDP λαμβάνεται υπόψη περισσότερες από μία
φορές.

Ενότητα 5.2 ΤΟ ΠΡΩΤΟΚΟΛΛΟ TCP

Προσδοκώμενα Αποτελέσματα: Όταν θα έχετε μελετήσει αυτήν την ενότητα, θα


μπορείτε να :
• απαριθμήσετε πέντε τουλάχιστον δυνατότητες που παρέχει το TCP στις
εφαρμογές υπολογιστών
• αναφέρετε πέντε βασικά χαρακτηριστικά του πρωτοκόλλου TCP
• περιγράψετε με αδρές γραμμές τη μορφή των μηνυμάτων TCP
• εξηγήσετε τις διαδικασίες εγκαθίδρυσης και τερματισμού μίας σύνδεσης TCP
• κατανοήσετε το διάγραμμα μετάβασης κατάστασης του TCP
• περιγράψετε το μηχανισμό ολισθαίνοντος παραθύρου στο TCP και να
αιτιολογήσετε τη χρησιμότητά του
• εξηγήσετε το πώς επιτυγχάνεται ο έλεγχος ροής στο TCP
• διατυπώσετε τη σημαντικότερη δυσκολία που αντιμετωπίζει η εφαρμογή των
αλγορίθμων επανεκπομπής στο TCP και να περιγράψετε τον τρόπο
αντιμετώπισής της
• περιγράψετε αναλυτικά πως διενεργείται ο έλεγχος συμφόρησης στο TCP

Το πρωτόκολλο TCP (Transmission Control Protocol) είναι ένα πολύπλοκο


πρωτόκολλο μεταφοράς που παρέχει στις εφαρμογές ανωτέρου επιπέδου τις ακόλουθες
179

δυνατότητες: (α) εξασφαλισμένη παράδοση μηνυμάτων, (β) τήρηση της σειράς


αποστολής των μηνυμάτων κατά την παράδοσή τους στον τελικό προορισμό, (γ)
συγχρονισμό μεταξύ του αποστολέα και του παραλήπτη, (δ) έλεγχο της ροής δεδομένων
του αποστολέα από τον παραλήπτη και (ε) διαχωρισμό των διαφορετικών προορισμών σ’
ένα κόμβο. Επιπρόσθετα, το TCP μπορεί να χρησιμοποιηθεί για τον έλεγχο συμφόρησης
στο δίκτυο.
Υλοποιώντας τις παραπάνω δυνατότητες, το πρωτόκολλο TCP παρέχει μία αξιόπιστη
υπηρεσία μεταφοράς δεδομένων προς τις εφαρμογές, απαλλάσσοντάς αυτές από το φόρτο
χειρισμού της αναξιόπιστης επικοινωνίας που προσφέρει το πρωτόκολλο δικτύου IP.
Το TCP είναι το δημοφιλέστερο και το πιο ευρέως χρησιμοποιούμενο πρωτόκολλο
Επιπέδου Μεταφοράς στις μέρες μας και χρησιμοποιείται από εφαρμογές που δεν
επιδέχονται απώλεια πακέτων κατά τη μεταφορά, όπως π.χ. η μεταφορά αρχείων ή το
ηλεκτρονικό ταχυδρομείο.

5.2.1 Τα βασικά χαρακτηριστικά του TCP


Το πρωτόκολλο TCP απαιτεί την εγκαθίδρυση σύνδεσης μεταξύ του αποστολέα και
του παραλήπτη κόμβου πριν από την έναρξη της μεταξύ τους επικοινωνίας (connection
oriented). Ο αποστολέας θα πρέπει να αιτηθεί τη σύνδεση στον παραλήπτη κόμβο, ο
οποίος με τη σειρά του πρέπει να την αποδεχθεί και να συμφωνήσουν στη συνέχεια στις
τιμές διαφόρων παραμέτρων λειτουργίας της σύνδεσης. Καθόλη τη διάρκεια της
επικοινωνίας η σύνδεση παραμένει ενεργή και παρακολουθείται τόσο από τον
αποστολέα, όσο και από τον παραλήπτη, ενώ στο τέλος της επικοινωνίας οι δύο
τερματικοί κόμβοι εκτελούν και μία διαδικασία τερματισμού της σύνδεσης. Η σύνδεση
που εγκαθιδρύεται μεταξύ των συνομιλητών είναι πλήρως αμφίδρομη (full duplex),
δηλαδή επιτυγχάνεται η ανταλλαγή μηνυμάτων και προς τις δύο κατευθύνσεις.
Το πρωτόκολλο TCP χρησιμοποιεί το μηχανισμό των θυρών για το διαχωρισμό των
διαφορετικών προορισμών σ’ έναν κόμβο, όπως ακριβώς συμβαίνει και στο πρωτόκολλο
UDP. Έτσι, κάθε σύνδεση TCP χαρακτηρίζεται μοναδικά από την τετράδα 〈θύρα πηγής,
διεύθυνση πηγής, θύρα προορισμού, διεύθυνση προορισμού〉.
Ένα άλλο χαρακτηριστικό του TCP είναι το ότι υποστηρίζει τη ροή bytes μεταξύ
πρωτοκόλλου και εφαρμογής (byte-stream oriented). Αυτό σημαίνει ότι η εφαρμογή στον
κόμβο του αποστολέα προωθεί bytes στη θύρα TCP, ενώ η εφαρμογή του παραλήπτη
λαμβάνει bytes από την αντίστοιχη θύρα TCP της σύνδεσης. Όμως, το πρωτόκολλο TCP
180

δεν μεταφέρει bytes μέσω του δικτύου, αλλά ομαδοποιεί τα δεδομένα σε μεγαλύτερες
συλλογές χρησιμοποιώντας έναν ενταμιευτή (βλέπε Σχήμα 5.4). Αυτές οι συλλογές bytes
ονομάζονται τμήματα ή μηνύματα TCP (TCP segments). Τα μηνύματα TCP
ενθυλακώνονται σε πακέτα IP, τα οποία και μεταδίδονται στο δίκτυο. Στο άκρο του
παραλήπτη, το περιεχόμενο ενός ληφθέντος μηνύματος TCP τοποθετείται στον
ενταμιευτή της αντίστοιχης θύρας προορισμού. Από αυτόν τον ενταμιευτή η διεργασία
της εφαρμογής προορισμού διαβάζει τα ληφθέντα bytes σύμφωνα με το δικό της ρυθμό.
Πότε όμως αποστέλλονται τα bytes που έχουν συσσωρευτεί στον ενταμιευτή
αποστολής; Στο πρωτόκολλο TCP υπάρχουν τρεις μηχανισμοί που ενεργοποιούν την
αποστολή ενός μηνύματος: (α) όταν συσσωρευτούν πλήθος bytes ίσο ή μεγαλύτερο από
το μέγιστο επιτρεπτό μέγεθος τμήματος TCP (maximum segment size, MSS), (β) όταν η
εφαρμογή το ζητήσει, ενεργοποιώντας τη σχετική λειτουργία ώθησης (push) και (γ) κατά
περιοδικά χρονικά διαστήματα.

διεργασία διεργασία
εφαρμογής εφαρμογής

αποστολή λήψη
. bytes . bytes
. .
. .

TCP TCP

ενταμιευτής θύρας ενταμιευτής θύρας


για την αποστολή για τη λήψη
μηνυμάτων μηνυμάτων

μεταφορά μηνυμάτων TCP

μήνυμα TCP μήνυμα TCP . . . μήνυμα TCP

Σχήμα 5.4. Ο τρόπος με τον οποίο τo πρωτόκολλο TCP υποστηρίζει τη ροή bytes
μεταξύ πρωτοκόλλου και εφαρμογής,

Για την εξασφαλισμένη παράδοση των μηνυμάτων στον τελικό προορισμό, το


πρωτόκολλο TCP χρησιμοποιεί το μηχανισμό ολισθαίνοντος παραθύρου για την
επανεκπομπή των ανεπιβεβαίωτων μηνυμάτων και συγκεκριμένα τον αλγόριθμο
επιλεκτικής επανάληψης. Η υλοποίηση του μηχανισμού ολισθαίνοντος παραθύρου
αντιμετωπίζει διάφορες δυσκολίες όταν εφαρμόζεται στο πρωτόκολλο TCP, απ’ ότι στα
181

πρωτόκολλα του Επιπέδου Σύνδεσης Δεδομένων. Και αυτό γιατί η σύνδεση μεταξύ των
δύο άκρων στο TCP επιτυγχάνεται συνήθως διαμέσου ενδιάμεσων δρομολογητών και
πλήθους συνδέσμων, ενώ στο χαμηλότερο επίπεδο μεσολαβεί μόνο ένας σύνδεσμος
σημείου με σημείο. Αυτό έχει ως αποτέλεσμα την ύπαρξη μεταβαλλόμενου χρόνου
μετάβασης μετ’ επιστροφής (Round Trip Time, RTT) στη σύνδεση TCP, αντί για σταθερού
RTT που συνήθως εξασφαλίζεται στις συνδέσεις των πρωτοκόλλων σύνδεσης
δεδομένων. Αυτή η μεταβλητότητα του χρόνου RTT επηρεάζει σημαντικά τη
συμπεριφορά του αλγορίθμου επανεκπομπής και επιβάλλει τη διαρκή προσαρμογή των
παραμέτρων του (και ιδιαίτερα του χρόνου προθεσμίας – timeout) στην τρέχουσα
κατάσταση του δικτύου.
Τέλος, το πρωτόκολλο TCP διαθέτει ένα μηχανισμό ελέγχου της ροής δεδομένων,
μέσω του οποίου ο παραλήπτης κόμβος μπορεί να ρυθμίσει το ρυθμό εκπομπής πακέτων
από τον αποστολέα κόμβο. Επιπρόσθετα, το TCP διαθέτει και ένα μηχανισμό ελέγχου της
συμφόρησης δικτύου, μέσω του οποίου ρυθμίζεται ο ρυθμός εκπομπής δεδομένων του
αποστολέα, όχι όμως για το φόβο υπερφόρτωσης του παραλήπτη κόμβου, αλλά για την
αποφυγή υπερφόρτωσης των ενδιάμεσων κόμβων του δικτύου.
Το πρωτόκολλο TCP ορίζεται, διορθώνεται και επεκτείνεται στα RFCs 793
(September 1981), 1122 (October 1989) και 1323 (May 1992) αντίστοιχα.

5.2.2 Η μορφή των μηνυμάτων TCP


Στο Σχήμα 5.5 απεικονίζεται η μορφή των μηνυμάτων TCP. Το μήκος του κάθε
πεδίου δίδεται σε bits. Τα μηνύματα TCP, εκτός από μεταφορά δεδομένων,
χρησιμοποιούνται για την εγκαθίδρυση και τερματισμό των συνδέσεων και για την
αποστολή μηνυμάτων επιβεβαίωσης λήψης και προσαρμογής του μεγέθους του
ολισθαίνοντος παραθύρου. Επίσης, αξιοποιώντας την πλήρως αμφίδρομη σύνδεση, το
TCP χρησιμοποιεί την τεχνική της εμβόλιμης επιβεβαίωσης λήψης (piggy-backing).
Τα δύο πρώτα πεδία της επικεφαλίδας TCP είναι οι θύρες πηγής και προορισμού των
δεδομένων αντίστοιχα.
Τα bytes που μεταβιβάζονται από την εφαρμογή στο πρωτόκολλο TCP για μεταφορά
απαριθμούνται, έτσι ώστε να είναι εφικτός ο έλεγχος και η διατήρηση της σειράς
αποστολής. Ο αριθμός σειράς (sequence number) της επικεφαλίδας ενός μηνύματος TCP
περιέχει τον αριθμό σειράς του πρώτου byte από τα δεδομένα που περιέχονται σ’ αυτό το
μήνυμα.
182

Τα πεδία επιβεβαίωσης (acknowledgement) και (μέγεθος) διαφημιζόμενου παραθύρου


(advertised window) χρησιμοποιούνται από τον μηχανισμό ολισθαίνοντος παραθύρου και
η χρήση τους περιγράφεται αναλυτικά στην Ενότητα 5.2.4.

0 4 10 16 31

θύρα TCP πηγής θύρα TCP προορισμού

αριθμός σειράς

επιβεβαίωση

μήκος RESET
PUSH
URG
ACK
SYN
FIN

επικεφα- 0 διαφημιζόμενο παράθυρο


λίδας

άθροισμα ελέγχου δείκτης επειγόντων δεδομένων

προαιρετικές επιλογές (πεδίο μεταβλητού μήκος) παραγέμισμα

δεδομένα

Σχήμα 5.5. Η μορφή των μηνυμάτων TCP.

Η επικεφαλίδα TCP περιέχει έξι δυαδικούς ενδείκτες, οι οποίοι συμβολίζονται ως


SYN, FIN, RESET, PUSH, URG και ACK αντίστοιχα. Οι ενδείκτες SYN και FIN
χρησιμοποιούνται κατά την εγκαθίδρυση και τον τερματισμό της σύνδεσης TCP
αντίστοιχα. Ο ενδείκτης RESET ενεργοποιείται όταν ο παραλήπτης κόμβος θελήσει να
τερματίσει τη σύνδεση, λόγω κάποιου προβλήματος που εντόπισε στην επικοινωνία.
Όταν η εφαρμογή στο άκρο του αποστολέα ενεργοποιήσει τη λειτουργία ώθησης για την
εκπομπή του μηνύματος TCP, τότε ενεργοποιείται και ο ενδείκτης PUSH στην
επικεφαλίδα του, έτσι ώστε η ομότιμη εφαρμογή στο άκρο του παραλήπτη να
πληροφορηθεί αυτό το γεγονός. Επίσης, όταν το πεδίο επιβεβαίωσης περιέχει μία έγκυρη
τιμή, τότε ενεργοποιείται και ο ενδείκτης ACK έτσι ώστε να μην αγνοηθεί αυτό το πεδίο
από τον παραλήπτη κόμβο.
Μερικές φορές, η εφαρμογή στο ένα άκρο της σύνδεσης θέλει να αποστείλει επείγοντα
δεδομένα στην εφαρμογή του άλλου άκρου, παρακάμπτοντας τα bytes που υπάρχουν
συσσωρευμένα στον ενταμιευτή αποστολής. Για παράδειγμα, κατά την απομακρυσμένη
183

πρόσβαση υπολογιστή, ο απομακρυσμένος χρήστης θέλει να διακόψει μία εκτελούμενη


διεργασία στον υπολογιστή πατώντας στο πληκτρολόγιο τα προβλεπόμενα πλήκτρα
διακοπής. Τότε, η εφαρμογή απομακρυσμένης πρόσβασης που εκτελείται στο άκρο του
χρήστη θα πρέπει να αποστείλει άμεσα την ακολουθία χαρακτήρων διακοπής, χωρίς να
χρειάζεται να περιμένει την ολοκλήρωση αποστολής των bytes που δημιουργήθηκαν πριν
από αυτήν. Η ύπαρξη των επειγόντων δεδομένων σ’ ένα μήνυμα TCP δηλώνεται με την
ενεργοποίηση του ενδείκτη URG. Τα επείγοντα δεδομένα τοποθετούνται στην αρχή του
μηνύματος και το μέγεθός τους (σε bytes) δηλώνεται στο πεδίο «δείκτης επειγόντων
δεδομένων».
Μεταξύ του πεδίου μήκους επικεφαλίδας και των δυαδικών ενδεικτών υπάρχει ένα
πεδίο μήκους 6 bits το οποίο δεν χρησιμοποιείται.
Μία σημαντική διαφορά της επικεφαλίδας TCP από την επικεφαλίδα UDP είναι η
ύπαρξη ενός πεδίου προαιρετικών επιλογών σ’ αυτήν. Αυτό το πεδίο χρησιμοποιείται
συνήθως για τον καθορισμό τιμών σε διάφορες παραμέτρους της σύνδεσης, όπως π.χ. του
μέγιστου επιτρεπτού μεγέθους τμήματος TCP. Η ύπαρξη προαιρετικών επιλογών
μεταβάλλει το μήκος της επικεφαλίδας TCP, το οποίο και δηλώνεται στο πεδίο «μήκος
επικεφαλίδας».
Τέλος, το άθροισμα ελέγχου χρησιμοποιείται με τον ίδιο ακριβώς τρόπο όπως και στο
UDP, με τη μόνη διαφορά του ότι δεν είναι πλέον προαιρετικό. Η τιμή του υπολογίζεται
από τα περιεχόμενα της επικεφαλίδας, από τα δεδομένα του μηνύματος και από τα
περιεχόμενα μίας ψευδοεπικεφαλίδας. Όπως και στο πρωτόκολλο UDP, η
ψευδοεπικεφαλίδα αποτελείται από τη διεύθυνση δικτύου της πηγής, από τη διεύθυνση
δικτύου του προορισμού, από τον δεσμευμένο αριθμό πρωτοκόλλου (6 για το TCP) και
από το μήκος του μηνύματος TCP.

Άσκηση Αυτοαξιολόγησης 5.2


Επιλέξτε τη σωστή ή τις σωστές απαντήσεις στις ακόλουθες ερωτήσεις πολλαπλών
επιλογών:

1. Ποιο από τα ακόλουθα δεν είναι τμήμα της επικεφαλίδας TCP:


(α) η διεύθυνση δικτύου πηγής
(β) η θύρα TCP προορισμού
(γ) ο χρόνος ζωής του μηνύματος (Time-to-live, TTL)
(δ) το μήκος μηνύματος TCP
184

2. Ποια είναι η κύρια διαφορά του TCP απ’ το UDP;


(α) χρησιμοποιούν διαφορετικό σχήμα διευθυνσιοδότησης δικτύου
(β) χρησιμοποιούν διαφορετικό μηχανισμό για το διαχωρισμό των τελικών
προορισμών σ’ έναν κόμβο
(γ) το TCP απαριθμεί τα μεταβιβαζόμενα bytes των δεδομένων, εγκαθριδρύει σύνδεση
για την επικοινωνία των τερματικών κόμβων και χρησιμοποιεί ένα μηχανισμό
ολισθαίνοντος παραθύρου για την επιβεβαίωση της λήψης μηνυμάτων
(δ) το TCP κρυπτογραφεί τα μεταβιβαζόμενα δεδομένα για εξασφάλιση του
απορρήτου αυτών κατά τη μεταφορά.

3. Γιατί οι τερματικοί κόμβοι χρησιμοποιούν τον έλεγχο ροής του πρωτοκόλλου TCP:
(α) για την παρακολούθηση της κυκλοφορίας στο δίκτυο
(β) για να επιτύχουν ένα σταθερό ρυθμό στη διακίνηση δεδομένων μεταξύ αποστολέα
και παραλήπτη
(γ) για την προώθηση επειγόντων δεδομένων από τον αποστολέα στον παραλήπτη
(δ) για να αποφύγουν την υπερχείληση του ενταμιευτή λήψης στο άκρο του
παραλήπτη

4. Σε ποια θύρα TCP λαμβάνει δεδομένα ένας εξυπηρετητής telnet (εφαρμογή για την
απομακρυσμένη χρήση υπολογιστών);
(α) 21 (β) 23 (γ) 25 (δ) 80

5. Ποια ή ποιες από τις παρακάτω λειτουργίες δεν εκτελούνται από το TCP;
(α) δρομολόγηση κυκλοφορίας
(β) έλεγχος συμφόρησης δικτύου
(γ) επιβεβαίωση της ορθής λήψης μηνυμάτων
(δ) έλεγχος ορθότητας μηνυμάτων για την ύπαρξη σφαλμάτων μεταφοράς

6. Ένα μήνυμα TCP αποστέλλεται από το άκρο του αποστολέα όταν:


(α) το ζητήσει ο αποστολέας
(β) το ζητήσει ο παραλήπτης
(γ) σε τακτά χρονικά διαστήματα
(δ) όταν υπάρχουν επείγοντα δεδομένα προς αποστολή
185

5.2.3 Η εγκαθίδρυση και ο τερματισμός μίας σύνδεσης TCP


Μία σύνδεση TCP ενεργοποιείται συνήθως όταν μία εφαρμογή πελάτη (ο καλών ή,
αλλιώς, ο ενεργητικός συμμετέχων) αιτηθεί επικοινωνία από έναν εξυπηρετητή (ο
καλούμενος ή ο παθητικός συμμετέχων). Αφού συμφωνήσουν στην επικοινωνία και τα
δύο άκρα μπορούν να αποστείλουν δεδομένα μέσω της σύνδεσης. Μία σύνδεση TCP
είναι αμφίδρομη, δηλαδή επιτρέπεται η διακίνηση δεδομένων και προς τις δύο
κατευθύνσεις. Όταν το ένα άκρο ολοκληρώσει τη μετάδοση δεδομένων που έχει προς
αποστολή, τότε αιτείται τον τερματισμό του αντίστοιχου σκέλους της αμφίδρομης
σύνδεσης. Το άλλο σκέλος παραμένει ενεργό, μέχρις ότου ζητηθεί και γι’ αυτό ο
τερματισμός του.

Η διαδικασία εγκαθίδρυσης μίας σύνδεσης TCP


Η διαδικασία που ακολουθείται για την εγκαθίδρυση μίας σύνδεσης TCP είναι γνωστή
με την επωνυμία «χειραψία τριών βημάτων» (three-way handshake) και απεικονίζεται
στο Σχήμα 5.6. Σ’ αυτό το σχήμα οι δύο κατακόρυφες γραμμές αναπαριστούν τον άξονα
του χρόνου για τον πελάτη και τον εξυπηρετητή αντίστοιχα. Οι λοξές γραμμές
αντιστοιχούν στη μετάδοση μηνυμάτων.

καλών καλούμενος
(πελάτης) (εξυπηρετητής)

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.3


Γιατί ο πελάτης και ο εξυπηρετητής είναι υποχρεωμένοι να γνωστοποιούν στο άλλο
άκρο τον αριθμό εκκίνησης για την αρίθμηση των σειρών δεδομένων τους; Δεν θα ήταν
απλούστερο εάν ξεκινούσαν πάντα από έναν προκαθορισμένο αριθμό (π.χ. το 0);

Το διάγραμμα μετάβασης κατάστασης του TCP


Το πρωτόκολλο TCP είναι αρκετά περίπλοκο και για την κατανόησή του ο J. Postel
συμπεριέλαβε ένα διάγραμμα μετάβασης κατάστασης στο σχετικό RFC (793,
Σεπτέμβριος 1981), το οποίο απεικονίζεται στο Σχήμα 5.7. Σ’ αυτό το διάγραμμα
απεικονίζονται όλες οι δυνατές καταστάσεις που είναι δυνατόν να περιέλθει το
πρωτόκολλο TCP κατά την εκτέλεση των διαδικασιών εγκαθίδρυσης και τερματισμού
μίας σύνδεσης. Οτιδήποτε συμβαίνει κατά την κανονική κατάσταση μεταφοράς των
δεδομένων περιγράφεται με την κατάσταση ESTABLISHED.
187

Μετάβαση κατάστασης πραγματοποιείται όταν (α) το ζητήσει η αντίστοιχη εφαρμογή


(σημειώνεται με την ένδειξη appl στο Διάγραμμα 5.7) και (β) όταν φτάσει ένα μήνυμα
από την ομότιμη εφαρμογή του άλλου άκρου (σημειώνεται με την ένδειξη recv). Κατά τη
μετάβαση από μία κατάσταση σε μία άλλη, το πρωτόκολλο αποστέλλει στο άλλο άκρο
ένα μήνυμα, τα χαρακτηριστικά του οποίου σημειώνονται με την ένδειξη send.

Σχήμα 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

Αναμονή μέχρι να εξαφανιστούν όλα τα πακέτα που είναι προς


TIME_WAIT
μεταφορά στο δίκτυο.
Και τα δύο άκρα προσπάθησαν να τερματίσουν τη σύνδεση
CLOSING
ταυτόχρονα.
CLOSE_WAIT Το απέναντι άκρο ξεκίνησε τον τερματισμό της σύνδεσης.
Αναμονή μέχρι να εξαφανιστούν όλα τα πακέτα που είναι προς
LAST_ACK
μεταφορά στο δίκτυο.

Άσκηση Αυτοαξιολόγησης 5.4


Ερμηνεύοντας το διάγραμμα του Σχήματος 5.7, περιγράψτε τι θα συμβεί εάν το
μήνυμα SYN που αποστέλλει ο πελάτης απορριφθεί από το δίκτυο πριν φτάσει στον
εξυπηρετητή.
Επίσης, τι θα συμβεί εάν απορριφθεί ή αλλοιωθεί το δεύτερο μήνυμα που αποστέλλει
ο πελάτης στον εξυπηρετητή κατά τη διαδικασία εγκαθίδρυσης μίας σύνδεσης TCP
(μήνυμα ACK);

Η διαδικασία τερματισμού μίας σύνδεσης TCP


Η σύνδεση TCP τερματίζεται ανεξάρτητα σε κάθε άκρο της. Όταν τερματιστεί η
σύνδεση στο ένα άκρο, αυτό σημαίνει ότι δεν μπορούν πλέον να αποσταλούν δεδομένα
από αυτό το άκρο αλλά μόνο να ληφθούν δεδομένα από το άλλο άκρο.
Υπάρχουν τρεις διαφορετικές περιπτώσεις τις οποίες πρέπει να χειριστεί το
πρωτόκολλο TCP: (α) ο τερματισμός της σύνδεσης ξεκινά από το δικό του άκρο, ο
οποίος καλείται ενεργητικός τερματισμός, (β) ο τερματισμός ξεκινά από το άλλο άκρο
(παθητικός τερματισμός) και (γ) ο τερματισμός ξεκινά ταυτόχρονα και από τα δύο άκρα.
Η ακολουθία καταστάσεων για τη μετάβαση από την κατάσταση ESTABLISHED στην
κατάσταση CLOSED για κάθε μία από τρεις παραπάνω περιπτώσεις απεικονίζονται στο
Σχήμα 5.7. και είναι:
(α) ESTABLISHED Æ FIN_WAIT_1 Æ FIN_WAIT_2 Æ TIME_WAIT Æ CLOSED
(β) ESTABLISHED Æ CLOSE_WAIT Æ LAST_ACK Æ CLOSED
και
(γ) ESTABLISHED Æ FIN_WAIT_1 Æ CLOSING Æ TIME_WAIT Æ CLOSED
190

Άσκηση Αυτοαξιολόγησης 5.5


Ερμηνεύοντας το διάγραμμα του Σχήματος 5.7, σχηματίστε ένα χρονοδιάγραμμα
περιγραφής της διαδικασίας τερματισμού μίας σύνδεσης TCP, ανάλογο μ’ αυτό του
Σχήματος 5.6 που αντιστοιχεί στη διαδικασία εγκαθίδρυσης της σύνδεσης. Περιοριστείτε
στην περίπτωση όπου ο τερματισμός ξεκινά από το άκρο του πελάτη.

5.2.4 Ο μηχανισμός ολισθαίνοντος παραθύρου στο TCP


Το TCP αντιμετωπίζει την αναξιόπιστη υπηρεσία μεταφοράς πακέτων που του παρέχει
το πρωτόκολλο IP με ένα μηχανισμό ολισθαίνοντος παραθύρου για την επανεκπομπή των
ανεπιβεβαίωτων μηνυμάτων και συγκεκριμένα με τον αλγόριθμο επιλεκτικής επανάληψης
(βλέπε Κεφάλαιο 4 του βιβλίου «Δίκτυα Υπολογιστών Ι», στη Θ.Ε. «Βασικά Ζητήματα
Δικτύων Η/Υ»).
Υπενθυμίζουμε συνοπτικά ότι ο αλγόριθμος της επιλεκτικής επανάληψης βασίζεται
στην ενημέρωση του αποστολέα για την ορθή μεταφορά των μηνυμάτων του από τον
τελικό παραλήπτη (επιβεβαίωση λήψης) και στην τήρηση χρόνου προθεσμίας για τη
λήψη της επιβεβαίωσης ανά μήνυμα, με το πέρας του οποίου το μήνυμα ξαναστέλνεται
Επίσης, ο αλγόριθμος αυτός επιτρέπει περισσότερα από ένα ανεπιβεβαίωτα μηνύματα να
βρίσκονται κάθε στιγμή υπό μεταφορά, διατηρώντας έτσι ένα «παράθυρο» στη διάταξη
των δεδομένων προς αποστολή. Αυτό το παράθυρο ολισθαίνει κάθε φορά που
επιβεβαιώνεται η ορθή λήψη ενός μηνύματος από τον παραλήπτη.
Έτσι, στον ενταμιευτή του αποστολέα, εκτός από τα μηνύματα που δεν έχουν ακόμα
αποσταλεί, κρατείται αντίγραφο και από κάθε μήνυμα που έχει αποσταλεί αλλά δεν έχει
ακόμα επιβεβαιωθεί η λήψη του.
Επίσης, στον ενταμιευτή του παραλήπτη αποθηκεύονται προσωρινά όλα τα μηνύματα
που ελήφθησαν χωρίς σφάλματα και δεν έχουν ακόμα προωθηθεί προς περαιτέρω
επεξεργασία στην αντίστοιχη εφαρμογή. Στα μηνύματα που αναμένουν στον ενταμιευτή
λήψης συμπεριλαμβάνονται και τα μηνύματα εκείνα που βρίσκονται εκτός σειράς, τα
οποία όμως δεν προωθούνται στην εφαρμογή, παρά μόνο όταν ληφθούν τα μηνύματα που
έλειπαν από την επιθυμητή διάταξη.
Με τη χρήση του μηχανισμού ολισθαίνοντος παραθύρου το πρωτόκολλο TCP μπορεί:
(α) να εγγυηθεί την παράδοση των δεδομένων στην ομότιμη εφαρμογή του άλλου άκρου
και (β) να εξασφαλίσει ότι η παράδοση γίνεται διατηρώντας τη σειρά αποστολής των
δεδομένων.
191

Άσκηση Αυτοαξιολόγησης 5.6


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

Άσκηση Αυτοαξιολόγησης 5.7


Εντοπίζετε κάποια αδυναμία στο πρωτόκολλο TCP σχετικά με την ικανότητά του να
αξιοποιήσει πλήρως μία σύνδεση;
[Υπόδειξη: Απ’ τη θεωρία των πρωτοκόλλων επανεκπομπής γνωρίζουμε ότι εάν σε μία
σύνδεση το εύρος του παραθύρου είναι μεγαλύτερο ή ίσο από το γινόμενο του ρυθμού
μετάδοσης επί του χρόνου μετάβασης μετ’ επιστροφής, τότε ο αποστολέας κόμβος είναι
σε θέση να αξιοποιήσει πλήρως αυτήν τη σύνδεση μεταδίδοντας συνεχώς δεδομένα στο
δίκτυο.]

Ο έλεγχος ροής στο TCP


Ο μηχανισμός ολισθαίνοντος παραθύρου, έτσι όπως υλοποιείται στο TCP, διενεργεί
και μία επιπλέον λειτουργία: τον έλεγχο του ρυθμού αποστολής δεδομένων διαμέσου της
σύνδεσης.
Η βασική ιδέα πάνω στην οποία στηρίζεται ο έλεγχος ροής του TCP είναι πολύ απλή:
αντί να ορίσουμε εξαρχής και χρησιμοποιούμε καθόλη τη διάρκεια ζωής μίας σύνδεσης
ένα παράθυρο σταθερού μεγέθους για την επιβεβαίωση της ορθής λήψης των
μεταφερόμενων δεδομένων, επιτρέπουμε στον παραλήπτη κόμβο να ορίζει αυτός το
μέγεθος του παραθύρου στον αποστολέα. Αυτή η ιδέα υλοποιείται μέσω του πεδίου
«διαφημιζόμενο παράθυρο» της επικεφαλίδας TCP. Έτσι, γνωρίζοντας το διαθέσιμο
χώρο που έχει στον ενταμιευτή του, ο παραλήπτης κόμβος επιλέγει την κατάλληλη τιμή
παραθύρου, έτσι ώστε να αποτραπεί το ανεπιθύμητο συμβάν της απώλειας μηνυμάτων
λόγω υπερχείλισης, και στη συνέχεια τη διαφημίζει στον παραλήπτη. Για τον παραπάνω
λόγο, το διαφημιζόμενο παράθυρο αναφέρεται συχνά στη βιβλιογραφία και ως
«παράθυρο λήψης» (receive window).
192

Προσαρμογή του χρόνου προθεσμίας


Μία σύνδεση TCP υλοποιείται συχνά διαμέσου πλήθους δρομολογητών και
συνδέσμων. Γι’ αυτό και ο χρόνος μετάβασης μετ’ επιστροφής (Round Trip Time, RTT)
που παρατηρείται στις συνδέσεις TCP είναι συνήθως μία μεταβλητή ποσότητα. Και
επειδή η τιμή του RTT επηρεάζει την τιμή του χρόνου προθεσμίας (timeout) για την
επιβεβαίωση ορθής λήψης, ο μηχανισμός ολισθαίνοντος παραθύρου στο TCP έχει
σχεδιαστεί έτσι ώστε να προσαρμόζει διαρκώς την τιμή του χρόνου προθεσμίας στην
τρέχουσα κατάσταση του δικτύου. Υπενθυμίζουμε ότι εάν ο χρόνος προθεσμίας τεθεί
πολύ μικρός, τότε θα υπάρξουν περιττές αναμεταδόσεις που θα γεμίσουν το δίκτυο με
επαναλαμβανόμενα πακέτα. Αντίθετα, αν τεθεί πολύ μεγάλος, θα μειωθεί η επίδοση του
δικτύου λόγω της μεγάλης καθυστέρησης της αναμετάδοσης χαμένων πακέτων.
Ο προσαρμοστικός αλγόριθμος για τον υπολογισμό του χρόνου προθεσμίας μίας
σύνδεσης TCP εξελίχθηκε σημαντικά στα χρόνια εφαρμογής του πρωτοκόλλου TCP. Η
πιο πρόσφατη έκδοση (γνωστής ως ο αλγόριθμος των Jacobson και Karels) στηρίζεται
στη διαρκή εκτίμηση της μέσης τιμής και της διακύμανσης του χρόνου RTT.
Κάθε φορά που το πρωτόκολλο TCP αποστέλλει ένα μήνυμα στο δίκτυο, καταγράφει
το χρόνο αποστολής του. Όταν φτάσει η επιβεβαίωση λήψης γι’ αυτό το μήνυμα, τότε το
TCP διαβάζει την τρέχουσα τιμή του χρόνου και καταχωρεί τη διαφορά του από τον
αντίστοιχο χρόνο αποστολής στη μεταβλητή SampleRTT. Εάν συμβολίσουμε με
EstimatedRTT την εκτιμώμενη μέση τιμή του χρόνου RTT και με Deviation την
εκτιμώμενη απόκλισή του, τότε αυτές υπολογίζονται ως εξής:
Difference = SampleRTT − EstimatedRTT (5.1)

EstimatedRTT = EstimatedRTT + (δ × Difference ) (5.2)

Deviation = Deviation + δ ( Difference − Deviation ) (5.3)

όπου δ είναι μία τιμή μεταξύ 0 και 1.


Στη συνέχεια, το TCP υπολογίζει τη νέα τιμή του χρόνου προθεσμίας, TimeOut, ως
συνάρτηση των εκτιμώμενων τιμών EstimatedRTT και Deviation :
TimeOut = μ × EstimatedRTT + φ × Deviation (5.4)
όπου τα μ και φ είναι παράμετροι του αλγορίθμου προσαρμογής, με τυπικές τιμές τις 1
και 4 αντίστοιχα. Έτσι, όταν η διακύμανση του εκτιμώμενου χρόνου μετάβασης μετ’
επιστροφής είναι μικρή, ο χρόνος προθεσμίας είναι περίπου ίσος με την τιμή
EstimatedRTT.
193

Άσκηση Αυτοαξιολόγησης 5.8


Εάν ο τρέχων χρόνος μετάβασης μετ’ επιστροφής σε μία σύνδεση TCP είναι
62 msec ± 12 msec και τα επόμενα 3 μηνύματα επιβεβαίωσης λήψης φτάνουν μετά από
45, 84 και 58 msec από το χρόνο μετάδοσης του πακέτου αντίστοιχα, υπολογίστε την νέα
τιμή του χρόνου προθεσμίας. Χρησιμοποιήστε δ = 0,8 , μ = 1 και φ = 4 .

5.2.5 Ο έλεγχος συμφόρησης δικτύου στο TCP


Ως συμφόρηση (congestion) ορίζεται εκείνη η ανεπιθύμητη κατάσταση του δικτύου
κατά την οποία έχουμε την απόρριψη μεταφερόμενων πακέτων από τους ενδιάμεσους
δρομολογητές λόγω υπερχείλισης των ενταμιευτών τους. Στην κατάσταση συμφόρησης,
το δίκτυο καλείται να μεταφέρει περισσότερη κυκλοφορία απ’ όση μπορεί απρόσκοπτα
να εξυπηρετήσει και αν δεν αντιμετωπιστεί εγκαίρως παραμονεύει ο κίνδυνος
κατάρρευσής του.
Για παράδειγμα, ας θεωρήσουμε ένα δίκτυο που βρίσκεται σε κατάσταση
συμφόρησης. Ένας κόμβος που έχει αποστείλει δεδομένα στο δίκτυο, πληροφορείται
εμμέσως (από την εκπνοή του χρόνου προθεσμίας) ότι αυτά δεν έχουν φτάσει στο άλλο
άκρο και έτσι αποφασίζει να τα ξαναστείλει. Ούτε και αυτή τη φορά όμως φτάνουν στον
προορισμό τους καθώς απορρίπτονται από κάποιον ενδιάμεσο δρομολογητή λόγω της
συμφόρησης. Η αποστολή των ίδιων δεδομένων επαναλαμβάνεται ξανά και ξανά χωρίς
αποτέλεσμα. Και επειδή η συμφόρηση δεν επηρεάζει μόνο μία μεμονωμένη σύνδεση
αλλά ένα ολόκληρο τμήμα του δικτύου, η παραπάνω άσκοπη αποστολή δεδομένων θα
διενεργείται και από άλλους κόμβους. Έτσι, το δίκτυο θα γεμίζει με αντίγραφα των ίδιων
δεδομένων, αντί να έχουμε μεταφορά νέων δεδομένων.
Στο Σχήμα 5.8 απεικονίζεται η συμφόρηση ως συνάρτηση του πλήθους των πακέτων
που στάλθηκαν στο δίκτυο προς μεταφορά και του πλήθους των πακέτων που τελικά
παραδίδονται στον προορισμό τους. Όταν δεν υπάρχει συμφόρηση στο δίκτυο, τότε όσα
πακέτα στέλνονται, τόσα πακέτα παραδίδονται στους προορισμούς τους – και αυτό
μέχρις ότου το δίκτυο προσεγγίσει τη μέγιστη διαμετακομιστική του ικανότητα. Όταν το
δίκτυο λειτουργεί στα όρια της διαμετακομιστικής του ικανότητας (είναι «φορτωμένο»
δηλαδή), τότε η επιθυμητή του λειτουργία είναι αυτή κατά την οποία δεν απορρίπτονται
πακέτα στους δρομολογητές του, αλλά απλώς καθυστερεί η παράδοσή τους λόγω της
προσωρινής ενταμίευσης στους ενδιάμεσους δρομολογητές. Όταν το δίκτυο λειτουργεί
υπό καθεστώς συμφόρησης, τότε το πλήθος των πακέτων που τελικά παραδίδονται στους
194

προορισμούς τους είναι ένα μέρος μόνο των πακέτων που έχουν αποσταλεί προς
μεταφορά, μειώνοντας έτσι σημαντικά τη διαμετακομιστική ικανότητα του δικτύου.

Πλήθος πακέτων που παραδίδονται Μέγιστο πλήθος πακέτων


που μπορούν να εξυπηρετηθούν
απρόσκοπτα από το δίκτυο

επιθυμητή συμπεριφορά

συμπεριφορά υπό καθεστώς συμφόρησης

Πλήθος πακέτων που μεταδίδονται

Σχήμα 5.8. Η συμπεριφορά του δικτύου υπό καθεστώς συμφόρησης.

Ένας τρόπος εξόδου από την κατάσταση συμφόρησης είναι η ελάττωση του ρυθμού
αποστολής δεδομένων στο δίκτυο από εκείνους τους κόμβους στους οποίους έγινε ορατή
η δυσλειτουργία της συμφόρησης. Αφού μειωθεί η ποσότητα των δεδομένων που
εισάγεται στο δίκτυο, οι ενδιάμεσοι δρομολογητές θα έχουν την ευκαιρία να προωθήσουν
τα πακέτα που έχουν συσσωρευτεί στους ενταμιευτές των συνδέσμων τους και έτσι να
τερματίσουν τη συμφόρηση δικτύου. Με τον τερματισμό της συμφόρησης, οι κόμβοι
που είχαν επηρεαστεί, ερευνούν την ύπαρξη διαθέσιμου εύρους ζώνης στη σύνδεσή τους
και αρχίζουν σταδιακά να αυξάνουν την ποσότητα των δεδομένων που αποστέλλουν στο
δίκτυο επιθυμώντας να αυξήσουν την απόδοση της σύνδεσής τους.
Πώς διαπιστώνουν όμως οι κόμβοι την ύπαρξη συμφόρησης στο δίκτυο; Η απάντηση
σ’ αυτό είναι εύκολη: από την εκπνοή των χρόνων προθεσμίας. Πόσο ελαττώνουν το
ρυθμό αποστολής δεδομένων έτσι ώστε να αντιμετωπίσουν τη συμφόρηση; Πόσο
αυξάνουν το ρυθμό αποστολής μετά την καταστολή της συμφόρησης; Οι απαντήσεις στις
τελευταίες δύο ερωτήσεις δεν είναι προφανείς και δίδονται στις επόμενες παραγράφους.

Ο αλγόριθμος της Προσθετικής Αύξησης / Πολλαπλασιαστικής Μείωσης


Όπως είδαμε στις προηγούμενες ενότητες του Κεφαλαίου, ο παραλήπτης κόμβος μίας
σύνδεσης TCP ρυθμίζει την αποστολή δεδομένων προς αυτόν θέτοντας την επιθυμητή
τιμή στο «διαφημιζόμενο παράθυρο». Επιπλέον όμως, για να μπορέσει να χειριστεί τις
195

καταστάσεις συμφόρησης στο δίκτυο, το πρωτόκολλο TCP διατηρεί στον αποστολέα


κόμβο μία μεταβλητή, η οποία ονομάζεται «παράθυρο συμφόρησης» (congestion
window). Το παράθυρο ανεπιβεβαίωτων μηνυμάτων του μηχανισμού ολισθαίνοντος
παραθύρου παίρνει τη μικρότερη από τις τιμές των μεταβλητών «διαφημιζόμενο
παράθυρο» και «παράθυρο συμφόρησης», ρυθμίζοντας έτσι την αποστολή δεδομένων
ανάλογα με τις δυνατότητες του πιο αργού τμήματος της σύνδεσης – του δικτύου ή του
παραλήπτη κόμβου.
Ενώ όμως την τιμή του «διαφημιζόμενου παραθύρου» την καθορίζει ο παραλήπτης
κόμβος παρατηρώντας τον ενταμιευτή του, δεν υπάρχει κάποιος που να καθορίσει την
τιμή του παραθύρου συμφόρησης. Έτσι, αυτήν την τιμή τη θέτει μόνος του ο αποστολέας
κόμβος, παρατηρώντας το επίπεδο της συμφόρησης που υπάρχει στο δίκτυο. Όταν
παρατηρεί αύξηση του βαθμού συμφόρησης στο δίκτυο μειώνει το παράθυρο
συμφόρησης, ενώ όταν παρατηρεί μείωση του βαθμού συμφόρησης στο δίκτυο το
αυξάνει.
Επίσης, εκτός από το παράθυρο συμφόρησης, στον αλγόριθμο ελέγχου συμφόρησης
δικτύου του TCP χρησιμοποιούμε μία ακόμα παράμετρο, η τιμή της οποίας καθορίζει τον
τρόπο αύξησης του παραθύρου συμφόρησης. Η παράμετρος αυτή ονομάζεται κατώφλι
παραθύρου συμφόρησης (threshold) και η χρήση της περιγράφεται αναλυτικά παρακάτω.
Για να μπορέσουμε να περιγράψουμε τον αλγόριθμο ελέγχου συμφόρησης στο TCP,
ας θεωρήσουμε ότι ο ενταμιευτής του κόμβου προορισμού είναι τόσο μεγάλος έτσι ώστε
μπορούμε να αγνοήσουμε τον περιορισμό του διαφημιζόμενου παραθύρου στην επιλογή
τιμής του παραθύρου αποστολής ανεπιβεβαίωτων μηνυμάτων στο δίκτυο. Επιπλέον, ας
θεωρήσουμε ότι ο αποστολέας κόμβος έχει συνεχώς δεδομένα διαθέσιμα προς αποστολή
στον παραλήπτη κόμβο.
Όταν εγκαθιδρυθεί η σύνδεση μεταξύ αποστολέα και παραλήπτη κόμβου, η τιμή του
παραθύρου συμφόρησης τίθεται ίση με το μέγιστο επιτρεπτό μέγεθος τμήματος TCP
(maximum segment size, MSS). Ο αποστολέας κόμβος στέλνει το πρώτο μήνυμα TCP στο
δίκτυο και περιμένει την επιβεβαίωση της λήψης του από τον κόμβο προορισμού. Εάν η
επιβεβαίωση λήψης φτάσει στον αποστολέα κόμβο πριν από την εκπνοή της σχετικής
προθεσμίας, τότε το παράθυρο συμφόρησης διπλασιάζεται και ο αποστολέας κόμβος
στέλνει 2 μηνύματα TCP στο δίκτυο, περιμένοντας ξανά την επιβεβαίωσή τους. Στην
εμπρόθεσμη επιβεβαίωση, το παράθυρο συμφόρησης διπλασιάζεται ξανά, επιτρέποντας
έτσι την αποστολή 4 ανεπιβεβαίωτων μηνυμάτων TCP στο δίκτυο. Αυτός ο
διπλασιασμός του παραθύρου συμφόρησης συνεχίζεται μέχρις ότου (α) οι επιβεβαιώσεις
196

λήψης φτάνουν εντός της προβλεπόμενης προθεσμίας και (β) το παράθυρο συμφόρησης
λαμβάνει τιμή μικρότερη του προκαθορισμένου κατωφλίου.
Αυτή η φάση του αλγορίθμου ελέγχου συμφόρησης δικτύου του TCP, όπου το
παράθυρο συμφόρησης αυξάνεται εκθετικά, καλείται «αργή εκκίνηση» (slow start). Με
την εφαρμογή της, ο ρυθμός μετάδοσης δεδομένων ξεκινά από μία μικρή τιμή στην

εκκίνηση μίας σύνδεσης (ίση με MSS ), αλλά στη συνέχεια η μετάδοση επιταχύνεται
RTT
ραγδαία.
Η φάση της αργής εκκίνησης τερματίζει όταν το παράθυρο συμφόρησης υπερβεί την
προκαθορισμένη τιμή κατωφλίου. Όταν σημειωθεί αυτή η υπέρβαση, το παράθυρο
συμφόρησης συνεχίζει να αυξάνεται, με γραμμικό όμως τρόπο και όχι με εκθετικό.
Συγκεκριμένα, εάν ο αποστολέας κόμβος λάβει επιβεβαίωση ορθής λήψης για όλα τα
μηνύματα που στάλθηκαν στο προηγούμενο παράθυρο συμφόρησης, τότε το TCP θεωρεί
ότι υπάρχει διαθέσιμος χώρος στο δίκτυο για την αποστολή περισσότερων δεδομένων και
αυξάνει το παράθυρο συμφόρησης κατά ποσότητα ίση με το μέγιστο μήκος μηνύματος
MSS (δηλαδή, εκτιμά ότι υπάρχει χώρος για την προσθήκη ενός ακόμα μηνύματος στο
παράθυρο των ανεπιβεβαίωτων μηνυμάτων). Αυτό έχει ως αποτέλεσμα την αύξηση του
παραθύρου συμφόρησης κατά MSS κάθε RTT δευτερόλεπτα. Αυτή η φάση του
αλγορίθμου καλείται «αποφυγή συμφόρησης» (congestion avoidance).
Η φάση της αποφυγής συμφόρησης συνεχίζεται για όσο χρονικό διάστημα ο
αποστολέας κόμβος λαμβάνει εμπρόθεσμες επιβεβαιώσεις λήψης από τον κόμβο
προορισμού. Όμως, καθώς το παράθυρο συμφόρησης, και κατά συνέπεια και ο ρυθμός
μετάδοσης δεδομένων, δεν μπορούν να αυξάνουν δια παντός χωρίς επίπτωση στην ομαλή
λειτουργία του δικτύου, κάποιος ενδιάμεσος δρομολογητής θα κορεστεί και θα απορρίψει
ένα από τα μεταφερόμενα πακέτα της σύνδεσης. Αυτή η απώλεια πακέτου θα γίνει ορατή
στον αποστολέα κόμβο από την εκπνοή του χρόνου προθεσμίας για τη λήψη του
σχετικού μηνύματος επιβεβαίωσης. Όταν λοιπόν ο αποστολέας κόμβος αντιληφθεί
απώλεια πακέτου, τότε θέτει ως τιμή κατωφλίου το μισό της τρέχουσας τιμής του
παραθύρου συμφόρησης και ξεκινά τη μετάδοση δεδομένων θέτοντας το μέγεθος του
παραθύρου συμφόρησης ίσο με ένα MSS. Στη συνέχεια ακολουθούνται οι μηχανισμοί της
αργής εκκίνησης και της αποφυγής συμφόρησης μέχρις ότου υπάρξει απώλεια πακέτου
στο δίκτυο κ.ο.κ.
197

Συνοψίζοντας λοιπόν, έχουμε ότι:


− όταν το παράθυρο συμφόρησης έχει τιμή μικρότερη από την προκαθορισμένη
τιμή κατωφλίου, το παράθυρο συμφόρησης αυξάνεται εκθετικά
− όταν το παράθυρο συμφόρησης έχει τιμή μεγαλύτερη ή ίση από την
προκαθορισμένη τιμή κατωφλίου, το παράθυρο συμφόρησης αυξάνεται
γραμμικά
− όταν εκπνεύσει ο χρόνος προθεσμίας για τη λήψη μηνύματος επιβεβαίωσης, το
κατώφλι λαμβάνει τιμή ίση με το μισό του τρέχοντος παραθύρου συμφόρησης
και το παράθυρο συμφόρησης λαμβάνει τιμή ίση με το μέγιστο επιτρεπτό
μέγεθος μηνύματος TCP.

Αν εξαιρέσουμε τη φάση της αργής εκκίνησης, παρατηρούμε ότι στο 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.

Άσκηση Αυτοαξιολόγησης 5.9


Ας θεωρήσουμε μία σύνδεση TCP επί της οποίας εφαρμόζεται ο αλγόριθμος AIMD
για τον έλεγχο συμφόρησης δικτύου. Σ’ αυτήν τη σύνδεση το μέγιστο μήκος μηνύματος
TCP έχει οριστεί στα 512 Bytes. Έστω ότι μία χρονική στιγμή υπάρχει απώλεια κελιού
και το τρέχον παράθυρο συμφόρησης είναι ίσο με 8 KB.
199

(α) Ποια τα μεγέθη του παραθύρου συμφόρησης μετά από 4, 8, 16 και 32 επιτυχείς
μεταδόσεις δεδομένων; (ως επιτυχή χαρακτηρίζουμε μία μετάδοση κατά την οποία έχουν
επιβεβαιωθεί οι λήψεις όλων των μηνυμάτων TCP που την απαρτίζουν)
(β) Εάν απωλεσθεί ένα πακέτο μετά από 4 επιτυχείς μεταδόσεις, ποιο θα είναι το
μέγεθος του παραθύρου συμφόρησης κατά την 8η μετάδοση από την αρχική απώλεια
πακέτου, υποθέτοντας ότι όλες οι υπόλοιπες μεταδόσεις ήταν επιτυχείς;

Γρήγορη Επαναμετάδοση και Γρήγορη Ανάκαμψη


Ο αλγόριθμος ελέγχου συμφόρησης AIMD που παρουσιάστηκε στην προηγούμενη
Ενότητα εμφανίζει δύο αδυναμίες που περιορίζουν το ρυθμό μετάδοσης δεδομένων στη
σύνδεση TCP: (α) όταν ένα πακέτο χαθεί κατά τη μεταφορά του στο δίκτυο, τότε ο
αποστολέας κόμβος θα πρέπει να περιμένει την εκπνοή του σχετικού χρόνου προθεσμίας
για να πληροφορηθεί αυτήν την απώλεια και (β) η εκκίνηση του μεγέθους του
παραθύρου συμφόρησης από την ελάχιστη τιμή του 1× MSS όταν υπάρχει απώλεια
πακέτου, ενδεχομένως αφήνει ανεκμετάλλευτη τη σύνδεση μέχρις ότου το παράθυρο
συμφόρησης λάβει μία σχετικά μεγάλη τιμή (π.χ. μεγαλύτερη του κατωφλίου).
Αυτές οι αδυναμίες γρήγορα εντοπίστηκαν και προτάθηκαν δύο μηχανισμοί για την
αντιμετώπισή τους: (α) η γρήγορη επαναμετάδοση (fast retransmission) και (β) η γρήγορη
ανάκαμψη (fast recovery) αντίστοιχα (βλέπε RFC-2581).
Η γρήγορη επαναμετάδοση βασίστηκε στην ύπαρξη των διπλότυπων μηνυμάτων
επιβεβαίωσης (duplicate ACKs) που εμφανίζονται κατά την εφαρμογή του αλγορίθμου
επιλεκτικής επανάληψης. Κάθε φορά που ένα πακέτο φτάνει στον προορισμό του, ο
κόμβος προορισμού αποκρίνεται μ’ ένα μήνυμα επιβεβαίωσης λήψης. Εάν κάποιο πακέτο
χαθεί κατά τη μεταφορά του στο δίκτυο, ενώ τα επόμενα απ’ αυτό πακέτα παραληφθούν
χωρίς σφάλματα από τον κόμβο προορισμού, τότε τα σχετικά μηνύματα επιβεβαίωσης θα
υποδεικνύουν την ορθή λήψη του πακέτου πριν από το απωλεσθέν πακέτο. Αυτά τα
μηνύματα επιβεβαίωσης χαρακτηρίζονται ως διπλότυπα γιατί υποδεικνύουν την ορθή
λήψη ενός πακέτου η οποία έχει ήδη επιβεβαιωθεί σε προγενέστερο χρόνο.
Όταν ο αποστολέας κόμβος λάβει ένα διπλότυπο μήνυμα επιβεβαίωσης, τότε
συμπεραίνει ότι κάποιο πακέτο είτε χάθηκε κατά τη μεταφορά του, είτε καθυστέρησε η
παράδοσή του. Εάν λάβει περισσότερα του ενός διπλότυπα μηνύματα επιβεβαίωσης, τότε
βεβαιώνεται ότι έχει υπάρξει απώλεια πακέτου και το μεταδίδει ξανά, χωρίς να
χρειάζεται να περιμένει την εκπνοή του χρόνου προθεσμίας του. Στην πραγματικότητα,
200

το TCP περιμένει να δει τρία διπλότυπα μηνύματα επιβεβαίωσης πριν επαναμεταδώσει το


απωλεσθέν πακέτο.
Στο Σχήμα 5.10 απεικονίζεται ο τρόπος λειτουργίας του μηχανισμού της γρήγορης
επαναμετάδοσης. Σ’ αυτό το παράδειγμα, τα πακέτα #1 και #2 παραδίδονται επιτυχώς
στον παραλήπτη κόμβο, ενώ το πακέτο #3 χάνεται στο δίκτυο. Έτσι, όταν το πακέτο #4
παραδοθεί επιτυχώς στον προορισμό του, ο παραλήπτης κόμβος θα επιβεβαιώσει ξανά τη
λήψη του πακέτου #2. Το ίδιο και κατά την επιτυχή παράδοση των πακέτων #5 και #6.
Μόλις όμως ο αποστολέας κόμβος λάβει το τρίτο διπλότυπο μήνυμα επιβεβαίωσης για το
πακέτο #2, διαπιστώνει την απώλεια του πακέτου #3 και το επαναμεταδίδει.
Παρατηρήστε ότι, όταν ο κόμβος προορισμού παραλάβει επιτυχώς το αντίγραφο του
πακέτου #3, τότε επιβεβαιώνει τη λήψη όλων των πακέτων που έχει λάβει μέχρι τότε.

αποστολέας παραλήπτης

πακέτο #1

πακέτο #2
πακέτο #3
ACK #1
πακέτο #4 X
ACK #2

ACK #2
πακέτο #5

πακέτο #6

ACK #2

ACK #2

επαναμετάδοση πακέτου #3

ACK #6

Σχήμα 5.10. Ο τρόπος λειτουργίας του μηχανισμού της γρήγορης επαναμετάδοσης στο
πρωτόκολλο TCP.

Εξαιτίας αυτής της ιδιότητας, το μήνυμα ACK #6 χαρακτηρίζεται ως σωρευτικό μήνυμα


επιβεβαίωσης (cumulative ACK).
201

Η ιδιότητα των σωρευτικών ACKs μπορεί να αξιοποιηθεί για τη μείωση της


κυκλοφορίας των πακέτων επιβεβαίωσης με τον ακόλουθο τρόπο: τα μηνύματα ACKs
δημιουργούνται και μεταδίδονται προς στον αποστολέα κόμβο κάθε δεύτερο μήνυμα που
παραλαμβάνεται χωρίς σφάλματα μεταφοράς από τον κόμβο προορισμού. Έτσι, το
πλήθος των μηνυμάτων επιβεβαίωσης που αποστέλλονται στο δίκτυο μπορεί να μειωθεί
στο μισό σε σχέση με την κλασσική περίπτωση, όπου τα μηνύματα ACKs
δημιουργούνται σε κάθε άφιξη πακέτου στον προορισμό του. Επειδή αυτά τα νέα
μηνύματα ACKs εμφανίζουν μία χρονική υστέρηση στην επιβεβαίωση της ορθής λήψης
πακέτων χαρακτηρίζονται ως καθυστερημένα μηνύματα επιβεβαίωσης (delayed ACKs).
Όταν εφαρμόζεται η τεχνική των καθυστερημένων επιβεβαιώσεων, τίθεται σε ισχύ και
μία χρονική προθεσμία αναμονής για τη λήψη του δεύτερου πακέτου δεδομένων. Εάν ο
κόμβος προορισμού λάβει ένα πακέτο δεδομένων και στη συνέχεια εκπνεύσει αυτή η
προθεσμία χωρίς να ληφθεί δεύτερο πακέτο, τότε επιβεβαιώνει την ορθή λήψη του ενός
πακέτου που έχει φτάσει σ’ αυτόν. Μ’ αυτόν τον τρόπο και με την επιλογή μίας
κατάλληλης τιμής προθεσμίας (π.χ. 200 ms), ο ρυθμός μεταφοράς μίας σύνδεσης δεν
επιβαρύνεται σημαντικά από την εφαρμογή της τεχνικής των καθυστερημένων
επιβεβαιώσεων, ενώ το δίκτυο απολαμβάνει τη μείωση της κυκλοφορίας του λόγω
περιορισμένης μετάδοσης μηνυμάτων επιβεβαίωσης.
Τέλος, για την αντιμετώπιση της αδυναμίας που εμφανίζει ο αρχικός αλγόριθμος
AIMD όταν το παράθυρο συμφόρησης τίθεται ίσο με την ελάχιστη δυνατή τιμή του μετά
από την απώλεια πακέτου, προτάθηκε η απομάκρυνση της φάσης αργής εκκίνησης από
τον αλγόριθμο – θα χρησιμοποιείται μόνο μετά την εγκαθίδρυση της σύνδεσης και όχι
κατά την μετέπειτα ζωή της. Έτσι, όταν διαπιστωθεί απώλεια πακέτου, το παράθυρο
συμφόρησης μειώνεται στο μισό και εφαρμόζεται η προσθετική αύξησή του μέχρις ότου
διαπιστωθεί ξανά απώλεια πακέτου. Αυτή η τεχνική ονομάζεται γρήγορη ανάκαμψη, γιατί
δεν απαιτούνται πλέον τα βήματα της εκθετικής αύξησης για να αρχίσει ο αποστολέας
κόμβος να μεταδίδει δεδομένα με ρυθμό παρόμοιο μ’ αυτόν που ίσχυε πριν την απώλεια
πακέτου.

Η μακροσκοπική συμπεριφορά του αλγορίθμου ελέγχου συμφόρησης του TCP


Ας θεωρήσουμε ότι ένας κόμβος θέλει να αποστείλει ένα πολύ μεγάλο αρχείο
διαμέσου μίας σύνδεσης TCP. Αν αγνοήσουμε τη φάση της αργής εκκίνησης (η οποία
άλλωστε διαρκεί πολύ λίγο σε σχέση με τη συνολική διάρκεια της σύνδεσης), τότε το
παράθυρο συμφόρησης γνωρίζουμε ότι θα αυξάνεται γραμμικά μέχρις ότου συμβεί
202

απώλεια πακέτου, οπότε και θα μειωθεί στο μισό. Αν εφαρμόζεται ο μηχανισμός της
γρήγορης ανάκαμψης και οι απώλειες πακέτων εμφανίζονται περιοδικά, τότε η
συμπεριφορά του παραθύρου συμφόρησης TCP απεικονίζεται στο Σχήμα 5.11 και
καλείται συχνά «οδοντωτό πριόνι» (saw-tooth) λόγω του χαρακτηριστικού σχήματός της.
μέγεθος παραθύρου συμφόρησης (σε MSS)

W
2

χρόνος
W W 3W 2W (σε RTT)
2 2

Σχήμα 5.11. Η συμπεριφορά του παραθύρου συμφόρησης TCP όταν οι απώλειες


πακέτων εμφανίζονται περιοδικά και εφαρμόζεται ο μηχανισμός της γρήγορης
ανάκαμψης.

Με δεδομένη τη συμπεριφορά του Σχήματος 5.11, μπορούμε να υπολογίσουμε τη


μέση τιμή του ρυθμού μετάδοσης δεδομένων διαμέσου μίας σύνδεσης TCP. Εάν, μία
αυθαίρετη χρονική στιγμή, το μέγεθος του παραθύρου συμφόρησης ισούται με w × MSS ,

τότε ο αποστολέας κόμβος μεταδίδει δεδομένα με ρυθμό


( w × MSS ) . Από τον τρόπο
RTT
λειτουργίας του αλγορίθμου AIMD, γνωρίζουμε ότι, κατά τη διάρκεια της φάσης
αποφυγής συμφόρησης, το TCP αυξάνει το μέγεθος του παραθύρου συμφόρησης κατά
1× MSS κάθε RTT δευτερόλεπτα, μέχρις ότου συμβεί απώλεια πακέτου. Αν
συμβολίσουμε με W το μέγεθος του παραθύρου συμφόρησης όταν διαπιστωθεί η
απώλεια πακέτου, τότε η τιμή του παραθύρου συμφόρησης στη διάρκεια ενός κύκλου
W
αυξάνεται ομοιόμορφα από W σε W , σε χρόνο ίσο με × RTT . Κατά συνέπεια, ο
2 2
ρυθμός μετάδοσης δεδομένων κυμαίνεται
⎛W ⎞
⎜ × MSS ⎟ (W × MSS )
από ⎝ 2 ⎠ έως .
RTT RTT
203

με μέση τιμή, Tav , ίση με

Tav =
( 0, 75 × W × MSS ) (5.5)
RTT

Επίσης, αν γνωρίζουμε ότι η πιθανότητα απώλειας πακέτου σ’ αυτή τη σύνδεση TCP


ισούται με p , τότε ισχύει ότι
1 1
p= ⇒ p≈ ⇒
W ⎛W ⎞ ⎛W ⎞ 3 2
+ ⎜ + 1⎟ + ⎜ + 2 ⎟ + L + W W
2 ⎝ 2 ⎠ ⎝ 2 ⎠ 8

8
⇒W ≈ (5.6)
3p

Αντικαθιστώντας τη μεταβλητή W της Σχέσης (5.5) με το ισοδύναμό της, όπως


δίδεται στη Σχέση (5.6), μπορούμε να εκφράσουμε τη μέση τιμή του ρυθμού μετάδοσης
δεδομένων σε μία σύνδεση TCP συναρτήσει της πιθανότητας απώλειας πακέτου, του
μέγιστου μήκους μηνύματος TCP και του χρόνου μετάβασης μετ’ επιστροφής της
σύνδεσης. Δηλαδή:
1, 22 MSS
Tav = ⋅ (5.7)
p RTT

Η ορθότητα της Σχέσης (5.7) έχει ελεγχθεί με εκτεταμένα πειράματα προσομοίωσης


και με την ανάλυση δεδομένων από πραγματικές συνδέσεις του Διαδικτύου και μπορεί να
χρησιμοποιηθεί σε προσεγγιστικές εκτιμήσεις της απόδοσης δικτύων TCP και σε
προβλήματα δέσμευσης εύρους ζώνης στο Διαδίκτυο (βλέπε το άρθρο των Mathis,
Semke, Mahdavi και Ott, 1997).

Άσκηση Αυτοαξιολόγησης 5.10


Ας θεωρήσουμε τη σύνδεση TCP μεταξύ των κόμβων Α και Β του Σχήματος 5.12. Οι
σύνδεσμοι Α-R1 και R2-B υποστηρίζουν ρυθμό μετάδοσης μέχρι τα 155 Mbps και ο
χρόνος διάδοσης σήματος κατά μήκος τους είναι ίσος με 5 msec, ενώ οι αντίστοιχες τιμές
στο σύνδεσμο R1-R2 είναι 622 Mbps και 50 ms. Αν σ’ αυτήν τη σύνδεση το μέγιστο
μήκος μηνύματος TCP έχει οριστεί στα 1024 Bytes και θεωρήσουμε ως αμελητέους τους
χρόνους μετάδοσης και τους χρόνους αναμονής στους ενταμιευτές των ενδιάμεσων
δρομολογητών, υπολογίστε το μέσο ρυθμό μετάδοσης δεδομένων της σύνδεσης TCP για
(α) πιθανότητα απώλειας πακέτων, p , ίση με 10−2 , (β) για p = 10−4 και (γ) για p = 10−6 .
204

155 Mbps 622 Mbps 155 Mbps

5 ms 50 ms 5 ms
A R1 R2 B

Σχήμα 5.12. Το δίκτυο υπολογιστών για την Άσκηση Αυτοαξιολόγησης 5.10.

Σύνοψη Κεφαλαίου
• Το πρωτόκολλο UDP (User Datagram Protocol) είναι ένα πολύ απλό πρωτόκολλο
Επιπέδου Μεταφοράς, καθώς υλοποιεί μόνο έναν μηχανισμό για την ανταλλαγή
αυτοδύναμων πακέτων μεταξύ των εφαρμογών υπολογιστών σ’ ένα δίκτυο IP και
διενεργεί έναν περιορισμένο έλεγχο εντοπισμού σφαλμάτων μεταφοράς.
• Το UDP χρησιμοποιείται ευρέως από εφαρμογές με μικρή ανοχή στην καθυστέρηση
μεταφοράς, όπως π.χ. η διανομή εικόνας/ήχου (video/audio streaming).
• Το πρωτόκολλο TCP (Transmission Control Protocol) είναι ένα πολύπλοκο
πρωτόκολλο μεταφοράς που προσφέρει στα ανώτερα επίπεδα: (α) εξασφαλισμένη
παράδοση μηνυμάτων, (β) τήρηση της σειράς αποστολής των μηνυμάτων κατά την
παράδοσή τους στον τελικό προορισμό, (γ) συγχρονισμό μεταξύ του αποστολέα και
του παραλήπτη, (δ) διαχωρισμό των διαφορετικών προορισμών σ’ ένα κόμβο, (ε)
έλεγχο της ροής δεδομένων του αποστολέα από τον παραλήπτη και (στ) έλεγχο της
συμφόρησης του δικτύου.
• Το TCP είναι το δημοφιλέστερο και το πιο ευρέως χρησιμοποιούμενο πρωτόκολλο
Επιπέδου Μεταφοράς στις μέρες μας και χρησιμοποιείται από εφαρμογές που δεν
επιδέχονται απώλεια πακέτων κατά τη μεταφορά, όπως π.χ. η μεταφορά αρχείων ή το
ηλεκτρονικό ταχυδρομείο.
• Στα πρωτόκολλα UDP και TCP, η επιλογή μίας εκ των διαφορετικών ενεργών
εφαρμογών σ’ έναν κόμβο ως ο τελικός προορισμός ενός πακέτου IP διενεργείται
έμμεσα με τη χρήση των «θυρών» πρωτοκόλλου.
• Το άθροισμα ελέγχου που υπάρχει στις επικεφαλίδες UDP και TCP καλύπτει τόσο τα
περιεχόμενα της επικεφαλίδας, όσο και τα δεδομένα του μηνύματος από σφάλματα
μεταφοράς.
205

• Το πρωτόκολλο TCP απαιτεί (σε αντίθεση με το UDP) την εγκαθίδρυση σύνδεσης


μεταξύ του αποστολέα και του παραλήπτη κόμβου πριν από την έναρξη της μεταξύ
τους επικοινωνίας. Η σύνδεση που εγκαθιδρύεται μεταξύ των συνομιλητών είναι
πλήρως αμφίδρομη. Με την ολοκλήρωση της επικοινωνίας, οι δύο τερματικοί κόμβοι
πρέπει να εκτελέσουν και μία διαδικασία τερματισμού της σύνδεσης.
• Το TCP υποστηρίζει τη ροή bytes μεταξύ πρωτοκόλλου και εφαρμογής (byte-stream
oriented). Όμως, το πρωτόκολλο TCP δεν μεταφέρει bytes μέσω του δικτύου, αλλά
ομαδοποιεί τα δεδομένα σε μεγαλύτερες συλλογές, οι οποίες ονομάζονται τμήματα ή
μηνύματα TCP, χρησιμοποιώντας από έναν ενταμιευτή σε κάθε άκρο.
• Για την εξασφαλισμένη παράδοση των μηνυμάτων στον τελικό προορισμό και για τη
διατήρηση της σειράς αποστολής των δεδομένων κατά την παράδοση, το πρωτόκολλο
TCP χρησιμοποιεί το μηχανισμό ολισθαίνοντος παραθύρου για την επανεκπομπή των
ανεπιβεβαίωτων μηνυμάτων και συγκεκριμένα τον αλγόριθμο επιλεκτικής
επανάληψης.
• Μέσω του μηχανισμού ολισθαίνοντος παραθύρου διενεργείται και ο έλεγχος ροής και
ο έλεγχος συμφόρησης στο TCP. Και οι δύο έλεγχοι υλοποιούνται επιλέγοντας
κατάλληλα το μέγεθος του παραθύρου ανεπιβεβαίωτων μηνυμάτων. Στον έλεγχο
ροής, το μέγεθος του παραθύρου καθορίζεται από τον παραλήπτη, ενώ στον έλεγχο
συμφόρησης καθορίζεται από τον αποστολέα. Οι αυξομειώσεις των τιμών μεγέθους
του παραθύρου γίνονται με τις τεχνικές «αργής εκκίνησης» και «προσθετικής
αύξησης / πολλαπλασιαστικής μείωσης».
• Τέλος, ο μηχανισμός ολισθαίνοντος παραθύρου στο TCP έχει σχεδιαστεί έτσι ώστε να
προσαρμόζει διαρκώς την τιμή του χρόνου προθεσμίας στην τρέχουσα κατάσταση του
δικτύου.
206

Βιβλιογραφία
Τα δύο βιβλία του 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).

ƒ W. Richard Stevens. “TCP/IP Illustrated, Volume 1: The Protocols”. Addison-


Wesley Pub Co. ISBN 0201633469. (1994).
ƒ Gary R. Wright, W. Richard Stevens. “TCP/IP Illustrated, Volume 2: The
Implementation”. Addison-Wesley Pub Co. ISBN 020163354X. (1995).
ƒ Larry L. Peterson and Bruce S. Davie. “Computer Networks: A System Approach”.
2nd Edition. Morgan Kaufmann Publishers, Inc. ISBN 1-55860-577-0. (2000).
ƒ Douglas Comer. “Internetworking with TCP/IP: Volume I: Principles, Protocols,
and Architectures”. Third Edition. Prentice-Hall, Inc. ISBN 0-13-216987-8.
(1995).
ƒ Andrew Tanenbaum. “Computer Networks”. Third Edition. Prentice-Hall, Inc.
ISBN 0-13-349945-6. (1996).
ƒ Andrew Tanenbaum. “Δίκτυα Υπολογιστών”. Μετάφραση: Βασίλης Στυλιανάκης.
Επιστημονική Επιμέλεια: Ευστάθιος Συκάς και Μιχαήλ Θεολόγου. Εκδόσεις
Παπασωτηρίου. ISBN 960-7510-70-4. (2000).
ƒ J. Postel. “User Datagram Protocol”. RFC-768. August 1980.
ƒ J. Reynolds and J. Postel. “ Assigned Numbers”. RFC-1700. October 1994.
ƒ J. Reynolds. “ Assigned Numbers: RFC 1700 is Replaced by an On-line Database”.
RFC-3232. January 2002.
ƒ J. Postel. “Transmission Control Protocol”. RFC-793. September 1981.
ƒ R. Braden. “Requirements for Internet Hosts - Communication Layers”. RFC-
1122. October 1989.
207

ƒ V. Jacobson, R. Braden and D. Borman. “TCP Extensions for High Performance”.


RFC-1323. May 1992.
ƒ V. Jacobson. “Congestion avoidance and Control”. In Proceedings of SIGCOMM
’88 (Stanford, CA), ACM. August 1988.
ƒ M. Allman, V. Paxson and W. Stevens. “TCP Congestion Control”. RFC-2581.
April 1999.
ƒ Matthew Mathis, Jeffrey Semke, Jamshid Mahdavi and Teunis Ott. “The
Macroscopic Behavior of the Congestion Avoidance Algorithm”. Computer
Communications Review, volume 27, number 3. July 1997.

Απάντηση Άσκησης Αυτοαξιολόγησης 5.1

Σωστό Λάθος

Όλα τα μηνύματα UDP ακολουθούν την ίδια διαδρομή


δικτύου από τον αποστολέα στον παραλήπτη κόμβο.
9
Τα μηνύματα UDP ενθυλακώνονται σε αυτοδύναμα πακέτα IP
τα οποία δρομολογούνται ανεξάρτητα στο δίκτυο.

Το ελάχιστο μήκος ενός μηνύματος UDP είναι 0 bytes, ενώ το


μεγαλύτερο 64 Kbytes.

Ένα μήνυμα UDP περιέχει πάντοτε την επικεφαλίδα του


Σχήματος 5.3 και συνεπώς το ελάχιστο μήκος του είναι ίσο με 8 9
bytes. Επίσης, σύμφωνα με το πεδίο «μήκος μηνύματος UDP»
της επικεφαλίδας, το μέγιστο μήκος ενός μηνύματος UDP είναι
πράγματι ίσο με 216 = 65.536 bytes = 64 Kbytes.

Οι διευθύνσεις IP του αποστολέα και του παραλήπτη κόμβου


περιλαμβάνονται στην επικεφαλίδα ενός μηνύματος UDP.

Οι διευθύνσεις IP της πηγής και του προορισμού 9


χρησιμοποιούνται στη σύνταξη της ψευδοεπικεφαλίδας (για τον
υπολογισμό του αθροίσματος ελέγχου UDP), αλλά δεν
περιλαμβάνονται στην επικεφαλίδα ενός μηνύματος UDP.

Η εφαρμογή FTP (για τη μεταφορά αρχείων μεταξύ


υπολογιστών) έχει αντιστοιχηθεί στις θύρες TCP 20 και 21. 9
Πράγματι, το κανάλι επικοινωνίας που έχει αντιστοιχιστεί στη
208

θύρα TCP 20 χρησιμοποιείται για τη μεταφορά των αρχείων,


ενώ το κανάλι επικοινωνίας της θύρας TCP 21 χρησιμοποιείται
για την ανταλλαγή μηνυμάτων ελέγχου.

Το άθροισμα ελέγχου UDP διενεργεί τον ίδιο έλεγχο με το


άθροισμα ελέγχου IP, γι’ αυτό και η χρήση του είναι
προαιρετική.

Το άθροισμα ελέγχου UDP καλύπτει και τα δεδομένα του


χρήστη, ενώ το άθροισμα ελέγχου IP καλύπτει μόνο την 9
επικεφαλίδα του πακέτου IP. Το άθροισμα ελέγχου UDP
επιλέγεται όταν τα οφέλη που αποκομίζονται από τη χρήση του
είναι σημαντικότερα από την επιβάρυνση που επιφέρει ο
υπολογισμός του.

Γνωρίζοντας ότι μία θύρα πρωτοκόλλου μεταφοράς συνήθως


υλοποιείται από το λειτουργικό σύστημα του υπολογιστή ως
μία ουρά μηνυμάτων πεπερασμένου μήκους, μπορούμε να
διατυπώσουμε τον ισχυρισμό ότι είναι δυνατή η απόρριψη
μηνυμάτων UDP στο άκρο του παραλήπτη κόμβου λόγω
υπερχείλισης του ενταμιευτή της αντίστοιχης ουράς.

Στο Σχήμα 5.9 απεικονίζεται ο συνήθης τρόπος υλοποίησης των 9


θυρών από το λειτουργικό σύστημα του υπολογιστή. Όταν ένα
μήνυμα UDP φτάνει στον κόμβο προορισμού του, τοποθετείται
στο τέλος της ουράς που αντιστοιχεί στη θύρα προορισμού. Εάν
η ουρά είναι γεμάτη, τότε το μήνυμα απορρίπτεται. Στο
πρωτόκολλο UDP δεν υπάρχει τρόπος να πληροφορηθεί ο
αποστολέας κόμβος γι’ αυτήν την υπερχείλιση έτσι ώστε να
μειώσει το ρυθμό αποστολής πακέτων.

Το UDP δεν αναλαμβάνει καμία επανορθωτική ενέργεια εάν


εντοπίσει σφάλμα μεταφοράς σ’ ένα μήνυμά του.

Ενώ το UDP μπορεί να εντοπίσει κάποια σφάλματα μεταφοράς


βασιζόμενο στο άθροισμα ελέγχου που τηρεί στην επικεφαλίδα 9
του, δεν έχει σχεδιαστεί έτσι ώστε να αντιδρά επανορθωτικά σε
τέτοιες περιπτώσεις και απλώς μεταφέρει το πρόβλημα αυτό
στις εφαρμογές.

Έστω δύο υπολογιστές Α και Β, όπου στον υπολογιστή Α


φιλοξενείται ένας δικτυακός τόπος. Ο χρήστης του
υπολογιστή Β δεν μπορεί να περιηγηθεί ταυτόχρονα από δύο
ή περισσότερες διαφορετικές εφαρμογές πελάτη στο
δικτυακό τόπο του Α γιατί έτσι παραβιάζεται ο κανόνας της
μοναδικότητας της τετράδας 〈θύρα πηγής, διεύθυνση πηγής, 9
θύρα προορισμού, διεύθυνση προορισμού〉.

Στο παραπάνω σενάριο, οι διευθύνσεις πηγής και προορισμού


είναι πράγματι οι ίδιες και για τα δύο ή περισσότερα κανάλια
επικοινωνίας μεταξύ των εφαρμογών. Ίδιες επίσης είναι και η
209

θύρα του προορισμού (TCP 80). Γιατί όμως να είναι ίδιες και οι
θύρες πηγής; Παρόλο που η εφαρμογή είναι η ίδια (πρόγραμμα
περιήγησης στον Ιστό), το λειτουργικό σύστημα του υπολογιστή
Β αποδίδει δυναμικά τις θύρες πηγής στις εφαρμογές πελάτες,
φροντίζοντας πάντα να χαρακτηρίζει μοναδικά μία επικοινωνία
με την προαναφερόμενη τετράδα.

Η δρομολόγηση των πακέτων είναι μία από τις βασικές


λειτουργίες των πρωτοκόλλων του Επιπέδου Μεταφοράς του
δικτύου. 9
Αυτή είναι μία λειτουργία του Επιπέδου Δικτύου.

Κατά τον υπολογισμό του αθροίσματος ελέγχου UDP, το


μήκος του μηνύματος UDP λαμβάνεται υπόψη περισσότερες
από μία φορές.
9
Πράγματι, το πεδίο «μήκος μηνύματος UDP» λαμβάνεται υπόψη
δύο φορές, καθώς συμμετέχει και στην κατάστρωση της
ψευδοεπικεφαλίδας.

διεργασία διεργασία διεργασία


εφαρμογής εφαρμογής εφαρμογής

θύρες πρωτοκόλλου
μεταφοράς

UDP

άφιξη πακέτου

Σχήμα 5.9. Οι θύρες πρωτοκόλλου μεταφοράς συνήθως υλοποιούνται από το


λειτουργικό σύστημα του υπολογιστή ως ξεχωριστές ουρές μηνυμάτων πεπερασμένου
μήκους.

Αν οι απαντήσεις σας και η αιτιολογία τους ταιριάζουν με τις παραπάνω, τότε πιστεύω
ότι έχετε κατανοήσει επαρκώς το πρωτόκολλο μεταφοράς UDP και μπορείτε να
210

προχωρήσετε στην επόμενη Ενότητα, που διαπραγματεύεται ένα πιο πολύπλοκο


πρωτόκολλο μεταφοράς: το TCP. Αν όμως οι απαντήσεις σας διαφέρουν σημαντικά από
αυτές που δόθηκαν σ’ αυτήν την ενδεικτική απάντηση, θα πρότεινα να μελετήσετε πάλι
προσεκτικά την Ενότητα 5.1 και να ξαναπροσπαθήσετε να επιλύσετε την Άσκηση 5.1.

Απάντηση Άσκησης Αυτοαξιολόγησης 5.2

1. Στην επικεφαλίδα TCP περιέχεται μόνο η θύρα προορισμού. Η διεύθυνση δικτύου


πηγής περιλαμβάνεται στην επικεφαλίδα του πακέτου IP, στην οποία επίσης υπάρχει και
ο χρόνος ζωής του πακέτου IP. Χρόνος ζωής για το μήνυμα TCP δεν ορίζεται στην
επικεφαλίδα TCP, όπως επίσης δεν ορίζεται και το μήκος του μηνύματος TCP. Αντίθετα,
στην επικεφαλίδα TCP υπάρχει ένα πεδίο που περιέχει το μήκος της επικεφαλίδας. Έτσι,
σωστές επιλογές είναι οι (β), (γ) και (δ).

2. Το σχήμα διευθυνσιοδότησης σ’ ένα δίκτυο που ακολουθείται ορίζεται στα


πρωτόκολλα του Επιπέδου Δικτύου και όχι σ΄ αυτά του Επιπέδου Μεταφοράς. Επίσης,
και το TCP και το UDP χρησιμοποιούν τον ίδιο μηχανισμό θυρών για το διαχωρισμό των
τελικών προορισμών σ’ έναν κόμβο, ενώ η λειτουργία της κρυπτογράφησης διενεργείται
είτε στο Επίπεδο Εφαρμογής (π.χ. με το πρωτόκολλο SSL), είτε στο Επίπεδο Δικτύου
(π.χ. με τα πρωτόκολλα της IPsec). Συνεπώς, σωστή επιλογή είναι μόνο η (γ).

3. Με τον έλεγχο ροής του TCP, ο παραλήπτης κόμβος μπορεί να μειώσει το ρυθμό
μετάδοσης δεδομένων του αποστολέα, έτσι ώστε να αποφύγει την υπερχείλιση του
ενταμιευτή λήψης που διαθέτει. Σταθερός ρυθμός στη διακίνηση δεδομένων δεν είναι
βέβαιο ότι μπορεί να επιτευχθεί, καθώς δεν γνωρίζουμε εάν υπάρχουν πάντα διαθέσιμα
δεδομένα προς μετάδοση. Η προώθηση επειγόντων δεδομένων διενεργείται με μία ειδική
διαδικασία ώθησης αυτών, η οποία περιγράφεται στην Ενότητα 5.2.2, και όχι με τον
έλεγχο ροής. Τέλος, η παρακολούθηση της κυκλοφορίας στο δίκτυο είναι ένα σύνθετο
ζήτημα και διενεργείται με άλλους μηχανισμούς και πρωτόκολλα και όχι με τον έλεγχο
ροής του TCP. Έτσι, σωστή επιλογή είναι μόνο η (δ).

4. Η εφαρμογή telnet έχει αντιστοιχηθεί στη θύρα TCP 23. Στις θύρες 21, 25 και 80
έχουν αντιστοιχηθεί οι εφαρμογές FTP, SMTP και HTTP αντίστοιχα. Σωστή επιλογή
λοιπόν είναι η (β).

5. Μόνο η δρομολόγηση κυκλοφορίας δεν εκτελείται από το TCP. Όλες οι υπόλοιπες


είναι λειτουργίες του TCP. Συγκεκριμένα, ο έλεγχος ορθότητας για σφάλματα μεταφοράς
211

επιτυγχάνεται με την ύπαρξη του αθροίσματος ελέγχου στην επικεφαλίδα TCP, το οποίο
καλύπτει τόσο την επικεφαλίδα, όσο και τα δεδομένα του μηνύματος TCP. Κατά
συνέπεια, σωστή επιλογή είναι η (α).

6. Σωστές επιλογές είναι οι (α) και (γ). Επίσης, ένα μήνυμα TCP αποστέλλεται και
όταν τα δεδομένα έχουν καλύψει το μέγιστο επιτρεπτό μέγεθος μηνύματος TCP. Δεν
υπάρχει άμεσος τρόπος για να ζητήσει ο παραλήπτης τη μετάδοση των δεδομένων που
υπάρχουν συσσωρευμένα στον ενταμιευτή του αποστολέα, ενώ τα επείγοντα δεδομένα
παρακάμπτουν τα υπάρχοντα bytes στον ενταμιευτή αποστολής, αλλά μεταδίδονται μόνο
εάν ο αποστολέας ενεργοποιήσει τη σχετική λειτουργία ώθησης.

Εάν έχετε δώσει τις σωστές επιλογές στις παραπάνω ερωτήσεις, τότε είμαστε σε καλό
δρόμο !

Απάντηση Άσκησης Αυτοαξιολόγησης 5.3


Μία σύνδεση TCP χαρακτηρίζεται από την τετράδα 〈θύρα πηγής, διεύθυνση πηγής,
θύρα προορισμού, διεύθυνση προορισμού〉 και, σε κάθε χρονική στιγμή, μπορεί να
υπάρξει μία μόνο σύνδεση μ’ αυτό το χαρακτηριστικό.
Όμως, είναι δυνατό να υπάρξουν δύο συνδέσεις με την ίδια χαρακτηριστική τετράδα,
οι οποίες να απέχουν χρονικά ελάχιστα η μία από την άλλη. Σ’ αυτήν την περίπτωση,
υπάρχει πιθανότητα να παρεμβληθεί ένα μήνυμα από την πρώτη σύνδεση στην
ακολουθία μηνυμάτων της δεύτερης σύνδεσης λόγω π.χ. καθυστερημένης άφιξης. Εάν οι
σειρές δεδομένων από τις αυτές τις δύο συνδέσεις χρησιμοποιούσαν την ίδια αρίθμηση,
τότε αυτή η παρεμβολή θα ήταν καταστροφική για την ακεραιότητα των μεταφερόμενων
δεδομένων και για την αξιοπιστία του πρωτοκόλλου TCP. Γι’ αυτό το λόγο, ο αριθμός
εκκίνησης για την αρίθμηση των σειρών δεδομένων των δύο άκρων επιλέγεται τυχαία.

Απάντηση Άσκησης Αυτοαξιολόγησης 5.4


Όταν ο πελάτης αποστείλει το μήνυμα SYN στον εξυπηρετητή θα μεταβεί στην
κατάσταση SYN_SENT, όπου και θα περιμένει την άφιξη της επιβεβαίωσης λήψης του
μηνύματός του από τον εξυπηρετητή. Αυτή η επιβεβαίωση όμως δε θα φτάσει ποτέ γιατί
το μήνυμα απορρίφθηκε από το δίκτυο, γεγονός που θα σημάνει την εκπνοή της
προθεσμίας αναμονής (timeout). Σ’ αυτήν την περίπτωση, το πρωτόκολλο TCP θα
επιστρέψει στo αρχικό του σημείο (κατάσταση CLOSED) και η εφαρμογή πελάτης θα
212

πρέπει να ξεκινήσει από την αρχή τη διαδικασία εγκαθίδρυσης της σύνδεσης με τον
εξυπηρετητή.
Αν όμως απορριφθεί το μήνυμα που αντιστοιχεί στο τρίτο σκέλος της διαδικασίας
εγκαθίδρυσης, η σύνδεση συνεχίζει να λειτουργεί κανονικά. Και αυτό γιατί το άκρο του
πελάτη βρίσκεται ήδη στην κατάσταση ESTABLISHED και έτσι η εφαρμογή του μπορεί
να αποστείλει δεδομένα στον εξυπηρετητή μόλις αυτά γίνουν διαθέσιμα. Σε κάθε ένα από
αυτά τα μηνύματα TCP που περιέχουν δεδομένα της εφαρμογής πελάτη είναι
ενεργοποιημένος ο ενδείκτης ACK. Στο δε πεδίο «επιβεβαίωσης» του μηνύματος έχει
τεθεί η κατάλληλη τιμή, έτσι ώστε να πληροφορηθεί το άκρο του εξυπηρετητή τη σειρά
του byte που περιμένει να λάβει ο πελάτης στο επόμενο μήνυμα. Αυτή η πληροφορία
επισυνάπτεται σε κάθε μήνυμα TCP, ακόμα και αν επαναλαμβάνεται η ίδια τιμή.

Απάντηση Άσκησης Αυτοαξιολόγησης 5.5


Η διαδικασία τερματισμού μίας σύνδεσης TCP, όταν αυτή ξεκινά από το άκρο του
πελάτη, απεικονίζεται στο Σχήμα 5.10.

πελάτης εξυπηρετητής

εντολή για τερματισμό σύνδεσης


από την εφαρμογή πελάτη
FIN

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.6


Το πεδίο «αριθμός σειράς» στην επικεφαλίδα TCP έχει μήκος 32 bits, ενώ το πεδίο
«διαφημιζόμενο παράθυρο» έχει μήκος 16 bits. Και επειδή 232 ? 2 × 216 , η συνθήκη
ορθής λειτουργίας του αλγορίθμου επιλεκτικής επανάληψης ικανοποιείται από το TCP.
214

Θα πρέπει εδώ να παρατηρήσουμε ότι στο πρωτόκολλο TCP το παράθυρο δεν


υποδεικνύει το μέγιστο επιτρεπτό πλήθος των ανεπιβεβαίωτων μηνυμάτων, αλλά το
μέγιστο επιτρεπτό πλήθος των ανεπιβεβαίωτων bytes που μπορούν να μεταδοθούν από
τον αποστολέα.

Απάντηση Άσκησης Αυτοαξιολόγησης 5.7


Το πεδίο «διαφημιζόμενο παράθυρο» στην επικεφαλίδα TCP έχει μήκος 16 bits και
έτσι, η μέγιστη ποσότητα δεδομένων που μπορεί να αποσταλεί στο δίκτυο χωρίς να έχει
επιβεβαιωθεί η ορθή λήψη τους είναι ίση με 216 = 64 ΚΒ .
Για ένα σταθερό χρόνο μετάβασης μετ’ επιστροφής, μπορούμε να υπολογίσουμε
ενδεικτικά το γινόμενο του ρυθμού μετάδοσης επί του χρόνου μετάβασης μετ’
επιστροφής για διάφορες δικτυακές τεχνολογίες. Έτσι, στον Πίνακα 5.1 απεικονίζονται
αυτά τα γινόμενα για RTT = 100 ms (η οποία αποτελεί μία τυπική τιμή για συνδέσεις
εντός Ευρώπης) και για συνδέσμους E1 (2 Mbps), Ethernet (10 Mbps), E3 (34 Mbps),
FDDI (100 Mbps), STM-1 (155 Mbps), STM-4 (622 Mbps) και STM-16 (2,4 Gbps).

Πίνακας 5.1. Το απαιτούμενο μέγεθος παραθύρου για την πλήρη αξιοποίηση συνδέσμου
όταν RTT = 100ms.

Τύπος συνδέσμου Ρυθμός μετάδοσης × RTT

E1 (2 Mbps) 25 KB

Ethernet (10 Mbps) 122 KB

E3 (34 Mbps) 425 KB

FDDI (100 Mbps) 1,2 MB

STM-1 (155 Mbps) 1,8 MB

STM-4 (622 Mbps) 7,4 MB

STM-16 (2,4 Gbps) 30 MB

Από τα στοιχεία του Πίνακα 5.1 παρατηρούμε ότι, για RTT = 100 ms, το πρωτόκολλο
TCP αδυνατεί να αξιοποιήσει πλήρως συνδέσμους E3 ή ταχύτερους, λόγω του
περιορισμού που έχει στο μέγεθος παραθύρου. Η λύση σ’ αυτό το πρόβλημα δόθηκε με
την αλλαγή της μονάδας μέτρησης του παραθύρου και του αριθμού σειράς. Αντί λοιπόν
αυτά τα πεδία να μετρώνται σε bytes, δόθηκε η δυνατότητα στα δύο άκρα μίας σύνδεσης
215

να συμφωνήσουν εξ’ αρχής σε μία διαφορετική μονάδα μέτρησης, πολλαπλάσια του byte
(π.χ. οκτάδα ή δεκαεξάδα bytes), επιτυγχάνοντας με τον τρόπο αυτό παράθυρα μεγέθους
μέχρι 230 bytes (RFC-1323). Αυτή η συμφωνία επιτυγχάνεται κατά τη διαδικασία
εγκαθίδρυσης της μεταξύ τους σύνδεσης και η απαραίτητη πληροφορία περιλαμβάνεται
στις προαιρετικές επιλογές της επικεφαλίδας TCP.

Απάντηση Άσκησης Αυτοαξιολόγησης 5.8


Μετά τη λήψη του πρώτου μηνύματος επιβεβαίωσης, εφαρμόζοντας απευθείας τις
Σχέσεις (5.1) – (5.3), θα έχουμε:
Difference = 45 − 62 = −17 msec
EstimatedRTT = 62 − 0,8 × 17 = 48, 4 msec

Deviation = 12 + 0,8 (17 − 12 ) = 16 msec

Μετά τη λήψη του δεύτερου μηνύματος θα έχουμε:


Difference = 84 − 48, 4 = 35, 6 msec
EstimatedRTT = 48, 4 + 0,8 × 35, 6 = 76,88 msec

Deviation = 16 + 0,8 ( 35, 6 − 12 ) = 31, 68 msec

Και τέλος, μετά το 3ο μήνυμα επιβεβαίωσης, θα έχουμε:


Difference = 58 − 76,88 = −18,88 msec
EstimatedRTT = 76,88 − 0,8 × 18,88 = 61, 776 msec

Deviation = 31, 68 + 0,8 (18,88 − 31, 68 ) = 21, 44 msec

Με απευθείας εφαρμογή της Σχέσης (5.4) υπολογίζουμε τη νέα τιμή του χρόνου
προθεσμίας, TimeOut,
TimeOut = 61, 776 + 4 × 21, 44 = 147,536 msec

Εξαιτίας του υπολογιστικού φόρτου που εισάγει ο αλγόριθμος εκτίμησης του RTT
όταν εφαρμόζεται σε κάθε μεταδιδόμενο πακέτο, στην πραγματικότητα ο
προσαρμοστικός αλγόριθμος υπολογισμού του χρόνου προθεσμίας εφαρμόζεται επί ενός
δείγματος των μεταδιδομένων πακέτων, το οποίο επιλέγεται έτσι ώστε τα
δειγματοληφθέντα πακέτα να απέχουν χρονικά μεταξύ τους ένα προκαθορισμένο
διάστημα (π.χ. 500 msec).
216

Απάντηση Άσκησης Αυτοαξιολόγησης 5.9

Ας συμβολίσουμε με wi το μέγεθος του παραθύρου συμφόρησης κατά την i-οστή

μετάδοση δεδομένων και με threshold την τρέχουσα τιμή κατωφλίου.

(α) Εφαρμόζοντας πιστά τον αλγόριθμο AIMD θα έχουμε:

8 [γιατί στην προηγούμενη


threshold = KB = 4 KB
2 μετάδοση παρατηρήθηκε
w1 = 1× MSS = 0,5 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

w5 = w4 + 1× MSS = 9 × MSS = 4,5 KB


w6 = w5 + 1× MSS = 10 × MSS = 5 KB
w7 = w6 + 1× MSS = 11× MSS = 5,5 KB
w8 = w7 + 1× MSS = 12 × MSS = 6 KB [γραμμική αύξηση γιατί
K wi −1 ≥ threshold ]
w16 = w15 + 1× MSS = 20 × MSS = 10 KB
K
w32 = w31 + 1× MSS = 36 × MSS = 18 KB

(β) Σ’ αυτό το σενάριο θα έχουμε:

8 [γιατί στην προηγούμενη


threshold = KB = 4 KB
2 μετάδοση παρατηρήθηκε
w1 = 1× MSS = 0,5 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

4 [γιατί στην προηγούμενη


threshold = KB = 2 KB
2 μετάδοση παρατηρήθηκε
w5 = 1× MSS = 0,5 KB απώλεια πακέτου]

w6 = 2 × w5 = 2 × MSS = 1 KB [εκθετική αύξηση γιατί


w7 = 2 × w6 = 4 × MSS = 2 KB wi −1 < threshold ]

w8 = w7 + 1× MSS = 5 × MSS = 2,5 KB [γραμμική αύξηση γιατί


wi −1 ≥ threshold ]

Απάντηση Άσκησης Αυτοαξιολόγησης 5.10

Ο χρόνος μετάβασης μετ’ επιστροφής, RTT , για τη σύνδεση AB του Σχήματος 5.12.
θα είναι ίσος με

RTT = 2 × ( 5 + 50 + 5 ) msec = 120 msec

Γνωρίζοντας ότι 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−4 , τότε θα έχουμε


10
Tav ≅ KBps = 1000 KBps ≈ 1 MBps
10−4

(γ) Τέλος, εάν p = 10−6 , δηλαδή αν χάνουμε μόλις 1 πακέτο στα 1.000.000
εκπεμπόμενα πακέτα, τότε θα έχουμε
10
Tav ≅ KBps = 10000 KBps ≈ 10 MBps
10−6

You might also like