Έναρξη - Τριμερής χειραψία / 3-way handshake

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


  • Ο πελάτης στέλνει μια αίτηση σύνδεσης "client-to-server" για να επικοινωνήσει με έναν εξυπηρετητή.

  • Ο εξυπηρετητής αποδέχεται το αίτημα του πελάτη και στέλνει μια αίτηση σύνδεσης "server-to-client".

  • Ο πελάτης αποδέχεται το αίτημα του εξυπηρετητή και έτσι ξεκινά η TCP επικοινωνία.

Εγκαθίδρυση σύνδεσης στο TCP

Βήμα 1: O πελάτης (client) στέλνει ένα πακέτο (SYN αίτημα) προς έναν εξυπηρετητή (server) με το οποίο ζητάει την εγκαθίδρυση σύνδεσης.

Αποστολή SYN αιτήματος από έναν πελάτη (client)
προς έναν διακομιστή (server)


Βήμα 2: Αν ο διακομιστής (server) λάβει το SYN αίτημα του πελάτη (client) τότε στέλνει με την σειρά του δύο πακέτα. Το πρώτο πακέτο (ACK απάντηση) είναι ένα πακέτο επιβεβαίωσης που απευθύνεται στον χρήστη (client) για να τον ενημερώσει ότι έλαβε το SYN αίτημα που έστειλε προηγουμένως. Το δεύτερο πακέτο (SYN αίτημα) αποτελεί μια αίτηση από τον διακομιστή προς τον πελάτη (client) για να εγκαθιδρύσει κι αυτός μία σύνδεση με τον πρώτο.

Αποστολή SYN αιτήματος από έναν πελάτη (client)
προς έναν διακομιστή (server)


Βήμα 3: Αφού ο πελάτης (client) λάβει τα δύο πακέτα (ACK και SYN) που έστειλε ο εξυπηρετητής (server) προηγουμένως, θα στείλει πίσω στον εξυπηρετητή (server) ένα τελευταίο πακέτο (ACK απάντηση) με το οποίο τον ενημερώνει ότι έλαβε τα δύο πακέτα που είχε στείλει. Με αυτόν τον τρόπο ολοκληρώνεται η διαδικασία επικοινωνίας στο TCP.

Πακέτο ACK που στέλνει ο πελάτης (client) για να ενημερώσει τον διακομιστή (server)
ότι όλα είναι εντάξει κι ότι είναι έτοιμος για έναρξη σύνδεσης


Τερματισμός σύνδεσης στο TCP

Για να τερματιστεί μια TCP σύνδεση η ένδειξη FIN πρέπει να οριστεί στην TCP επικεφαλίδα. Σε κάθε μονόδρομη TCP συνεδρία έχουμε μια αμφίδρομη χειραψία που αποτελείται από ένα τμήμα FIN και ένα τμήμα επιβεβαίωσης (ACK). Οπότε για να τερματιστεί μια TCP σύνοδος χρειάζεται να πραγματοποιηθούν 4 συναλλαγές.


  • Όταν ο πελάτης δεν έχει άλλα δεδομένα που θέλει να στείλει, στέλνει ένα τμήμα (segment) με την ένδειξη FIN.

  • Ο εξυπηρετητής στέλνει ACK για να επιβεβαιώσει στον πελάτη ότι έλαβε το FIN τμήμα

  • Ο εξυπηρετητής στέλνει κι αυτός FIN στον πελάτη για να τερματιστεί η TCP σύνοδος

  • Ο πελάτης απαντά με ένα ACK για να επιβεβαιώσει στον εξυπηρετητή ότι έλαβε το FIN τμήμα που έστειλε

  • Όταν όλα τα τμήματα επιβεβαιωθούν η TCP σύνοδος τερματίζεται


Βήμα 1: O πελάτης (client) στέλνει ένα πακέτο (FIN αίτημα) προς τον εξυπηρετητή (server) με το οποίο ζητάει την τερματισμό σύνδεσης.



Αίτηση FIN που στέλνει ο πελάτης (client) στον
διακομιστή (server) για τερματισμό της σύνδεσης


Βήμα 2: Ο εξυπηρετητής (server) στέλνει μια ACK απάντηση στον πελάτη για να τον ενημερώσει ότι έλαβε το FIN πακέτο που έστειλε προηγουμένως.



Ο διακομιστής (server) στέλνει ένα ACK πακέτο στον πελάτη
για να τον ενημερώσει ότι έλαβε το FIN πακέτο που του έστειλε


Βήμα 3: Στην συνέχεια ο εξυπηρετητή (server) στέλνει άλλο ένα πακέτο στον πελάτη (client) με το οποίο ζητάει κι ο ίδιος τερματισμό σύνδεσης



Αίτηση FIN που στέλνει ο διακομιστής (server) προς τον πελάτη (client)


Βήμα 4: Αν πάνε όλα καλά κι ο πελάτης (client) λάβει τα δύο πακέτα του διακομιστή (server) τότε ο πρώτος στέλνει ένα πακέτο επιβεβαίωσης (ACK απάντηση) προς τον εξυπηρετητή (server) για να τον ενημερώσει ότι έλαβε τα δύο πακέτα ACK και FIN που έστειλε προηγουμένως και κατά συνέπεια τον τερματισμό της σύνδεσης.



Απάντηση ACK που στέλνει ο πελάτης (client) προς τον διακομιστή (server) προκειμένου να τον ενημερώσει
ότι έλαβε τα δύο πακέτα που έστειλε κι ότι η σύνδεση πρέπει να τερματιστεί



Τελευταία ενημέρωση: 25/04/2018






Follow us

 ☰