Κύρια μυστήρια των συνδέσεων TCP Packet Broker: Αποσυμπιέστε την ανάγκη για τριπλή χειραψία

Ρύθμιση σύνδεσης TCP
Όταν περιηγούμε στον ιστό, στείλτε ένα μήνυμα ηλεκτρονικού ταχυδρομείου ή παίζουμε ένα online παιχνίδι, συχνά δεν σκεφτόμαστε τη σύνθετη σύνδεση δικτύου πίσω από αυτό. Ωστόσο, αυτά τα φαινομενικά μικρά βήματα εξασφαλίζουν σταθερή επικοινωνία μεταξύ μας και του διακομιστή. Ένα από τα πιο σημαντικά βήματα είναι η ρύθμιση σύνδεσης TCP, και ο πυρήνας αυτού είναι η χειραψία τρισδιάστατων.

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

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

 TCP τριπλή χειραψία

Ας ρίξουμε μια πιο προσεκτική ματιά στα πακέτα TCP που αποστέλλονται σε κάθε σύνδεση.

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

 Πακέτο Syn

Όταν ένας πελάτης ξεκινά μια σύνδεση, παράγει έναν τυχαίο αρχικό αριθμό ακολουθίας (client_isn) και το τοποθετεί στο πεδίο "Αριθμός ακολουθίας" της κεφαλίδας TCP. Ταυτόχρονα, ο πελάτης θέτει τη θέση Syn Flag σε 1 για να υποδείξει ότι το εξερχόμενο πακέτο είναι ένα πακέτο Syn. Ο πελάτης υποδεικνύει ότι επιθυμεί να δημιουργήσει μια σύνδεση με το διακομιστή στέλνοντας το πρώτο πακέτο Syn στο διακομιστή. Αυτό το πακέτο δεν περιέχει δεδομένα στρώματος εφαρμογών (δηλαδή, τα δεδομένα που αποστέλλονται). Σε αυτό το σημείο, η κατάσταση του πελάτη σημειώνεται ως syn-sent.

Πακέτο Syn+ACK

Όταν ένας διακομιστής λαμβάνει ένα πακέτο SYN από έναν πελάτη, αρχικοποιεί τυχαία τον δικό του σειριακό αριθμό (server_isn) και στη συνέχεια βάζει αυτόν τον αριθμό στο πεδίο "σειριακού αριθμού" της κεφαλίδας TCP. Στη συνέχεια, ο διακομιστής εισέρχεται στο πεδίο Client_ISN + 1 στο πεδίο "Αριθμός επιβεβαίωσης" και ορίζει τα δύο bits SYN και ACK στο 1. Τέλος, ο διακομιστής στέλνει το πακέτο στον πελάτη, το οποίο δεν περιέχει δεδομένα στρώματος εφαρμογών (και κανένα δεδομένων για τον διακομιστή να στείλει). Αυτή τη στιγμή, ο διακομιστής βρίσκεται σε κατάσταση Syn-RCVD.

Πακέτο ACK

Μόλις ο πελάτης λάβει το πακέτο από το διακομιστή, πρέπει να εκτελέσει τις ακόλουθες βελτιστοποιήσεις για να ανταποκριθεί στο τελικό πακέτο απάντησης: Πρώτον, ο πελάτης ορίζει το bit ACK της κεφαλίδας TCP του πακέτου απάντησης στο 1. Δεύτερον, ο πελάτης εισάγει το Value Server_ISN + 1 στο πεδίο "Επιβεβαίωση Αριθμός Απάντησης". Τέλος, ο πελάτης στέλνει το πακέτο στο διακομιστή. Αυτό το πακέτο μπορεί να μεταφέρει δεδομένα από τον πελάτη στον διακομιστή. Μετά την ολοκλήρωση αυτών των εργασιών, ο πελάτης θα εισέλθει στην καθιερωμένη κατάσταση.

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

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

Γιατί τρεις χειραψίες; Όχι δύο φορές, τέσσερις φορές;
Η κοινή απάντηση είναι: "Επειδή η χειραψία τριών δρόμων εγγυάται τη δυνατότητα λήψης και αποστολής." Αυτή η απάντηση είναι σωστή, αλλά είναι μόνο ο λόγος επιφάνειας, δεν προτείνει τον κύριο λόγο. Στη συνέχεια, θα αναλύσω τους λόγους για την τριπλή χειραψία από τρεις πτυχές για να εμβαθύνουμε την κατανόησή μας για αυτό το ζήτημα.

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

Λόγος 1: Αποφύγετε τις ιστορικές αντίγραφες
Με λίγα λόγια, ο κύριος λόγος για την τριπλή χειραψία είναι να αποφευχθεί η σύγχυση που προκαλείται από την παλαιά διπλή αρχικοποίηση της σύνδεσης. Σε ένα πολύπλοκο περιβάλλον δικτύου, η μετάδοση πακέτων δεδομένων δεν αποστέλλεται πάντοτε στον κεντρικό υπολογιστή προορισμού σύμφωνα με τον καθορισμένο χρόνο και τα παλιά πακέτα δεδομένων μπορούν να φτάσουν πρώτα στον κεντρικό υπολογιστή προορισμού λόγω της συμφόρησης του δικτύου και άλλων λόγων. Για να αποφευχθεί αυτό, το TCP χρησιμοποιεί χειραψία τριών δρόμων για να δημιουργήσει τη σύνδεση.

Η χειραψία τριών δρόμων αποφεύγει τις ιστορικές διπλές συνδέσεις

Όταν ένας πελάτης στέλνει διαδοχικά πολλαπλά πακέτα σύνδεσης SYN SYN, σε καταστάσεις όπως η συμφόρηση του δικτύου, μπορεί να συμβούν τα ακόλουθα:

1- Τα παλιά πακέτα Syn φτάνουν στο διακομιστή πριν από τα τελευταία πακέτα Syn.
2- Ο διακομιστής θα απαντήσει σε ένα πακέτο SYN + ACK στον πελάτη μετά τη λήψη του παλιού πακέτου Syn.
3- Όταν ο πελάτης λαμβάνει το πακέτο SYN + ACK, καθορίζει ότι η σύνδεση είναι μια ιστορική σύνδεση (ο αριθμός ακολουθίας έληξε ή το χρονικό όριο) σύμφωνα με το δικό του πλαίσιο και στη συνέχεια στέλνει το πρώτο πακέτο στο διακομιστή για να ακυρώσει τη σύνδεση.

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

1- Εάν πρόκειται για μια ιστορική σύνδεση (ο αριθμός ακολουθίας έληξε ή το χρονικό όριο), το πακέτο που αποστέλλεται από την τρίτη χειραψία είναι ένα πρώτο πακέτο για να ακυρώσει την ιστορική σύνδεση.
2- Εάν δεν πρόκειται για ιστορική σύνδεση, το πακέτο που αποστέλλεται για τρίτη φορά είναι ένα πακέτο ACK και τα δύο επικοινωνιακά μέρη δημιουργούν με επιτυχία τη σύνδεση.

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

Λόγος 2: Για συγχρονισμό των αρχικών αριθμών ακολουθιών και των δύο μερών
Και οι δύο πλευρές του πρωτοκόλλου TCP πρέπει να διατηρούν έναν αριθμό ακολουθίας, ο οποίος αποτελεί βασικό παράγοντα για την εξασφάλιση αξιόπιστης μετάδοσης. Οι αριθμοί ακολουθιών διαδραματίζουν σημαντικό ρόλο στις συνδέσεις TCP. Κάνουν τα εξής:

Ο δέκτης μπορεί να εξαλείψει τα διπλά δεδομένα και να εξασφαλίσει την ακρίβεια των δεδομένων.

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

● Ο αριθμός ακολουθίας μπορεί να προσδιορίσει το πακέτο δεδομένων που έχει ληφθεί από το άλλο μέρος, επιτρέποντας την αξιόπιστη μετάδοση δεδομένων.

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

Συγχρονίστε τους αρχικούς σειριακούς αριθμούς και των δύο μερών

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

Λόγος 3: Αποφύγετε τη σπατάλη πόρων
Εάν υπάρχει μόνο ένα "δύο handshake", όταν το αίτημα SYN-client έχει αποκλειστεί στο δίκτυο, ο πελάτης δεν μπορεί να λάβει το πακέτο ACK που αποστέλλεται από το διακομιστή, οπότε το SYN θα δυσφημεί. Ωστόσο, δεδομένου ότι δεν υπάρχει τρίτη χειραψία, ο διακομιστής δεν μπορεί να καθορίσει εάν ο πελάτης έλαβε μια επιβεβαίωση ACK για να καθορίσει τη σύνδεση. Επομένως, ο διακομιστής μπορεί να δημιουργήσει μόνο μια σύνδεση μετά τη λήψη κάθε αιτήματος SYN. Αυτό οδηγεί στα εξής:

Σχέδιο πόρων: Εάν το αίτημα SYN του πελάτη είναι αποκλεισμένο, με αποτέλεσμα την επαναλαμβανόμενη μετάδοση πολλαπλών πακέτων SYN, ο διακομιστής θα δημιουργήσει πολλαπλές πλεονάζουσες μη έγκυρες συνδέσεις μετά τη λήψη του αιτήματος. Αυτό οδηγεί σε μια περιττή σπατάλη πόρων διακομιστή.

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

Αποφύγετε τη σπατάλη πόρων

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

Περίληψη
ΟΜεσίτης πακέτων δικτύουΗ εγκατάσταση σύνδεσης TCP γίνεται με χειραψία τριών δρόμων. Κατά τη διάρκεια της χειραψίας τριών δρόμων, ο πελάτης στέλνει πρώτα ένα πακέτο με τη σημαία SYN στον διακομιστή, υποδεικνύοντας ότι θέλει να δημιουργήσει μια σύνδεση. Αφού λάβει το αίτημα από τον πελάτη, ο διακομιστής απαντά ένα πακέτο με σημαίες SYN και ACK στον πελάτη, υποδεικνύοντας ότι το αίτημα σύνδεσης είναι αποδεκτό και στέλνει τον δικό του αρχικό αριθμό ακολουθίας. Τέλος, ο πελάτης απαντά με μια σημαία ACK στο διακομιστή για να υποδείξει ότι η σύνδεση έχει καθοριστεί με επιτυχία. Έτσι, τα δύο μέρη βρίσκονται στην καθιερωμένη κατάσταση και μπορούν να αρχίσουν να στέλνουν δεδομένα μεταξύ τους.

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


Χρόνος δημοσίευσης: Ιαν-08-2025