Δίκτυα Υπολογιστών Κεφάλαιο 16 – TCP Flags

Δημοσιεύτηκε από τον/την codebrakes στις

Δίκτυα Υπολογιστών
Κεφάλαιο 16 - TCP Flags

TCP ενδείξεις (TCP flags)

URG (URGent): Αυτή η ένδειξη χρησιμοποιείται για να προσδιορίσει τα εισερχόμενα δεδομένα ως «επείγοντα». Τα τμήματα αυτά στέλνονται και επεξεργάζονται κατευθείαν. Ένα παράδειγμα χρήσης αυτής της ένδειξης είναι όταν ένας Host στέλνει δεδομένα σε μια εφαρμογή που τρέχει σε ένα απομακρυσμένο υπολογιστή. Εάν υπάρξει κάποιο ζήτημα τότε ο host θα πρέπει να ακυρώσει την αποστολή και επεξεργασία των δεδομένων.

ACK (ACKnowledgment): Αυτή η ένδειξη χρησιμοποιείται για την επιτυχή παραλαβή πακέτων. Αν τρέξουμε κάποιο πρόγραμμα που κάνει καταγραφή πακέτων (packet sniffer) όπως το wireshark θα παρατηρήσουμε ότι στις περισσότερες περιπτώσεις για κάθε πακέτο που στέλνουμε ή λαμβάνουμε ακολουθεί και μια επιβεβαίωση. Σε κάποιες περιπτώσεις ο αποστολέας απαιτεί μια επιβεβαίωση για κάθε τρία πακέτα που στέλνονται. Σε αυτήν την περίπτωση ο παραλήπτης θα στείλει επιβεβαίωση μόλις φτάσει και το 3ο πακέτο σε αυτόν.

PSH (PuSH): Αυτή η ένδειξη είναι παρόμοια με την ένδειξη urgent και εξασφαλίζει ότι στα δεδομένα θα δοθεί η προτεραιότητα που αρμόζει στο καθένα. Αυτή η ένδειξη χρησιμοποιείται συχνά στην αρχή και στο τέλος μεταφοράς δεδομένων, επηρεάζοντας τον τρόπο με τον οποίο διαχειρίζονται τα δεδομένα και στις δύο πλευρές. Όταν μια εφαρμογή σε έναν host στέλνει μια ροή δεδομένων αυτά περιμένουν στην ουρά στο TCP buffer όπου είναι ένα ειδικό σημείο στην μνήμη, εως ότου το τμήμα (segment) φτάσει ένα συγκεκριμένο μέγεθος όπου μετά προωθείται προς τον παραλήπτη. Αυτός ο τρόπος εγγυάται ότι η μεταφορά δεδομένων είναι όσο το δυνατόν αποτελεσματική, χωρίς να σπαταλάτε χρόνος και εύρος ζώνης (bandwidth) δημιουργώντας πολλαπλά τμήματα (segments), αλλά συνδυάζοντας τα με μικρότερου και μεγαλύτερου μεγέθους. Όταν ένα τμήμα φτάσει στον παραλήπτη, τοποθετείται στο εισερχόμενο TCP buffer πρώτού προωθηθεί στο επίπεδο εφαρμογής. Τα δεδομένα που είναι στην ουρά του εισερχόμενου TCP buffer παραμένουν εκεί έως ότου φθάσουν και τα υπόλοιπα τμήματα. Όταν αυτό ολοκληρωθεί, τα δεδομένα προωθούνται στο επίπεδο εφαρμογής που αναμένει γι’ αυτά. Καθότι αυτή η διαδικασία είναι πολύ καλή σε πολλές περιπτώσεις, υπάρχουν εξαιρέσεις όπου η τοποθέτηση δεδομένων σε μια ουρά δεν είναι επιθυμητή καθότι οποιαδήποτε τέτοια καθυστέρηση μπορεί να προκαλέσει ζητήματα σε μια εφαρμογή που αναμένει. Ένα παράδειγμα αποτελεί μια TCP ροή (π.χ. real player) όπου τα δεδομένα πρέπει να στέλνονται και να επεξεργάζονται απο τον παραλήπτη άμεσα προκειμένου να διαβεβαιώσει την ομαλή ροή χωρίς οποιεσδήποτε παρεμβολές.

ReSeT (RST): Η ένδειξη αυτή χρησιμοποιείται όταν ένα τμήμα φτάνει σε μια τρέχουσα σύνδεση που δεν προορίζεται γι’ αυτήν. Με απλά λόγια έστω ότι στείλουμε ένα πακέτο προς έναν host προκειμένου να εγκαθιδρυθεί επικοινωνία και δεν υπάρχει κάποια υπηρεσία για να απαντήσει σε αυτόν τον απομακρυσμένο host τότε αυτός θα απορρίψει αυτόματα την αίτηση που στείλαμε και θα μας προωθήσει μια απάντηση με την ένδειξη RST. Καθότι αυτό μπορεί να φανεί πολύ απλό και λογικό, η αλήθεια είναι ότι στις περισσότερες υπηρεσίες χρησιμοποιείται από hackers προκειμένου να εντοπίσουν ανοικτές θύρες επικοινωνίας των hosts.

SYNchronize (SYN): Η ένδειξη αυτή είναι ίσως η πιο γνωστή στις TCP επικοινωνίες και αναλαμβάνει τον συγχρονισμό αριθμών ακολουθίας. Με απλά λόγια στέλνεται αρχικά για να εγκαθιδρυθεί μια τριμερής χειραψία (3-way handshake) μεταξύ δύο hosts:

Παράδειγμα τριμερούς χειραψίας (3-way handshake)

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

FINish (FIN): Αυτή η ένδειξη χρησιμοποιείται για τον τερματισμό των εικονικών συνδέσεων που δημιουργήθηκαν από την SYN ένδειξη. Οπότε γι’ αυτόν τον λόγο αυτή η ένδειξη πάντα εμφανίζεται όταν τα τελευταία πακέτα έχουν ανταλλαχθεί σε μια TCP σύνδεση. Μια εξίσου σημαντική παρατήρηση είναι όταν ένας host στέλνει μια FIN ένδειξη για να τερματιστεί η TCP σύνδεση. Μπορεί να συνεχίζει να λαμβάνει δεδομένα έως ότου ο απομακρυσμένος host τερματίσει κι αυτός την σύνδεση του. Η εικόνα παρακάτω δίνει ένα παράδειγμα τερματισμού μιας TCP σύνδεσης.

Παράδειγμα τερματισμού TCP σύνδεσης

Τελευταία Ενημέρωση: 1/12/2016