Κοινή χρήση τεχνολογίας

JavaEE Elementary Network Principles 2

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


Πρόλογος

Το πρωτόκολλο TCP έχει τα χαρακτηριστικά σύνδεσης, αξιόπιστης μετάδοσης, προσανατολισμού σε ροή byte, full-duplex κ.λπ. Η αξιόπιστη μετάδοση είναι το βασικό μέρος του.


1. Δομή κεφαλίδας TCP

Φιγούρα 1
Εισαγάγετε την περιγραφή της εικόνας εδώ
Το παραπάνω σχήμα είναι η δομή της κεφαλίδας TCP.
(1) Η θύρα προέλευσης και η θύρα προορισμού δεν χρειάζεται να εισαχθούν πολύ. Είναι τα προγράμματα που χρησιμοποιούνται για να υποδείξουν το τέλος αποστολής και το τέλος λήψης.
(2) Ο αριθμός αλληλουχίας και ο αριθμός σειράς επιβεβαίωσης χρησιμοποιούνται για τον μηχανισμό απόκρισης επιβεβαίωσης στο TCP που εισήχθη αργότερα.
(3) Τα 4 bit στο τμήμα μετατόπισης δεδομένων χρησιμοποιούνται στην πραγματικότητα για να υποδείξουν το μήκος της κεφαλίδας TCP, λόγω των 4 bit, ο μέγιστος αριθμός που αντιπροσωπεύεται είναι 15, αλλά επειδή η μονάδα είναι 4 byte, το μέγιστο μήκος του. Η κεφαλίδα TCP είναι 60 byte.
(4) Όλοι γνωρίζουμε ότι το μέγιστο μήκος των πακέτων δεδομένων UDP είναι 64 kb, το οποίο είναι πολύ περιορισμένο, επομένως για να αποφευχθεί αυτή η κατάσταση, παρέχονται 6 δεσμευμένα bit στην κεφαλίδα TCP, τα οποία μπορούν να χρησιμοποιηθούν εάν επεκταθεί η συνάρτηση TCP αργότερα.
(5) Το αγγλικό αναγνωριστικό των 6 byte σχετίζεται με τον μηχανισμό TCP που παρουσιάστηκε αργότερα και δεν θα εισαχθεί εδώ.
(6) Το άθροισμα ελέγχου έχει την ίδια λειτουργία με το άθροισμα ελέγχου στο UDP και χρησιμοποιείται επίσης για να ελέγξει εάν τα δεδομένα έχουν αλλάξει κατά τη διαδικασία μετάδοσης.
(7) Το παράθυρο θα συζητηθεί αργότερα όταν εισαχθεί ο μηχανισμός.
(8) Ο δείκτης έκτακτης ανάγκης θα εισαχθεί αργότερα.
(9) Μεταξύ των επιλογών είναι ορισμένες προαιρετικές/προαιρετικές επιλογές.

2. Δέκα βασικοί μηχανισμοί του TCP

2.1 Απόκριση επιβεβαίωσης

Το πρωτόκολλο TCP πρέπει να λύσει ένα πολύ σημαντικό πρόβλημα - την αξιόπιστη μετάδοση. Η λεγόμενη αξιόπιστη μετάδοση δεν σημαίνει ότι ο αποστολέας μπορεί να στείλει τα δεδομένα στον παραλήπτη 100%, αλλά θα προσπαθήσει να ενημερώσει τον αποστολέα εάν ο παραλήπτης γνωρίζει.
Σχήμα 2
Εισαγάγετε την περιγραφή της εικόνας εδώ
Όπως φαίνεται στο Σχήμα 2, κάθε φορά που στέλνετε ένα μήνυμα στη θεά, η θεά θα σας στέλνει ένα μήνυμα. Αυτή είναι η περίπτωση στο TCP Επιστρέφει ένα πακέτο δεδομένων απόκρισης Αυτή τη στιγμή, τα δεδομένα απόκρισης Η σημαία ACK του πακέτου στην Εικόνα 1 θα οριστεί σε 1.
εικόνα 3
Εισαγάγετε την περιγραφή της εικόνας εδώ
Όπως φαίνεται στο Σχήμα 3, όταν στέλνουμε πολλά μηνύματα στη θεά, επειδή η θεά απαντά σε μηνύματα με διαφορετικές ταχύτητες, είναι εύκολο για εμάς να μπερδευτούμε Η θεά λέει να χαθείς Αυτό είναι το Διαδίκτυο. Προφανώς, στέλνοντας πολλά πακέτα δεδομένων στον πελάτη και ο πελάτης ανταποκρίνεται σε πακέτα δεδομένων πολλαπλών απαντήσεων, πρέπει επίσης να διακρίνουμε ποια απόκριση αντιστοιχεί σε ποιο πακέτο δεδομένων εστάλη Αυτό το πρόβλημα μπορεί να λυθεί χρησιμοποιώντας τον αριθμό σειράς και τον αριθμό σειράς επιβεβαίωσης στο σχήμα 1 .
Εισαγάγετε την περιγραφή της εικόνας εδώ
Κάθε πακέτο δεδομένων που αποστέλλεται έχει έναν αριθμό σειράς, αλλά δεν υπάρχει αριθμός σειράς επιβεβαίωσης ή το πεδίο αριθμού σειράς επιβεβαίωσης δεν είναι έγκυρο. και ο αριθμός ακολουθίας πακέτων δεδομένων και η απόκριση Οι αριθμοί σειράς επιβεβαίωσης των πακέτων δεδομένων είναι αντίστοιχοι, έτσι ώστε να μπορεί να διακριθεί ποιος απάντησε σε ποιον και να λυθεί το προαναφερθέν πρόβλημα τελευταίας προτεραιότητας στο δίκτυο .
Ο αριθμός ακολουθίας του πραγματικού πακέτου δεδομένων TCP αριθμείται σύμφωνα με τα byte. του πρώτου byte στο τμήμα ωφέλιμου φορτίου Ένας αριθμός byte είναι 1 και το μήκος του ωφέλιμου φορτίου είναι 1000 byte, τότε ο αριθμός αλληλουχίας επιβεβαίωσης στην κεφαλίδα του πακέτου δεδομένων απόκρισης του πακέτου δεδομένων είναι 1001. Αυτό συμβαίνει επειδή ο αριθμός ακολουθίας επιβεβαίωσης του. Το πακέτο δεδομένων απόκρισης που αντιστοιχεί στο πακέτο δεδομένων έχει οριστεί σε Ο αριθμός του τελευταίου byte του ωφέλιμου φορτίου αυξάνεται κατά 1. Στην πραγματικότητα, αυτό είναι πιο κατανοητό Η επιστροφή 1001 σημαίνει ότι το ωφέλιμο φορτίο των 1000 byte έχει αποσταλεί ζητούνται δεδομένα μετά το 1001, όπως φαίνεται στο Σχήμα 4.
Εικόνα 4
Εισαγάγετε την περιγραφή της εικόνας εδώ
Για τα επόμενα πακέτα δεδομένων που αποστέλλονται, ο αριθμός σειράς αυξάνεται, αλλά ένα πράγμα που πρέπει να σημειωθεί είναι ότι, παρόλο που αυξάνεται, ο αριθμός ακολουθίας δεν ξεκινά από το 0 ή το 1.
Αξιόπιστη μετάδοση μπορεί να επιτευχθεί κυρίως βασιζόμενος στον μηχανισμό «απόκρισης επιβεβαίωσης». Μπορεί να πει στον αποστολέα μέσω του μηνύματος απόκρισης εάν όλα πάνε καλά και εάν συμβεί απώλεια πακέτου (τα δεδομένα απορρίπτονται κατά τη διάρκεια της διαδικασίας μετάδοσης και δεν μπορούν να φτάσουν στο αντίθετο άκρο, ένα αντικειμενικό τυχαίο συμβάν);

2.2 Χρονικό όριο αναμετάδοσης

Η αναμετάδοση χρονικού ορίου χρησιμοποιείται για την αντιμετώπιση προβλημάτων απώλειας πακέτων στο δίκτυο.
Υπάρχουν κυρίως δύο καταστάσεις εδώ:
(1) Τα μεταδιδόμενα πακέτα δεδομένων χάνονται
Εισαγάγετε την περιγραφή της εικόνας εδώ
Αυτή τη στιγμή, το B δεν θα στείλει ένα πακέτο απόκρισης εάν δεν λάβει το πακέτο δεδομένων του A Όταν το συμβάν A που περιμένει υπερβεί ένα ορισμένο όριο, θα προσδιορίσει ότι έχει προκύψει πρόβλημα απώλειας πακέτου και θα μεταδώσει ξανά το πακέτο δεδομένων.
(2) Το πακέτο δεδομένων απόκρισης χάθηκε
Εισαγάγετε την περιγραφή της εικόνας εδώ
Όταν το A δεν λαμβάνει το πακέτο δεδομένων απόκρισης, εξακολουθεί να μεταδίδει ένα πακέτο δεδομένων, αλλά αυτή τη στιγμή ο Β έχει λάβει ένα πακέτο δεδομένων, θα λάβει δύο πανομοιότυπα πακέτα δεδομένων , ειδικά για θέματα όπως μεταγραφές, όπου θα υπάρξουν επαναλαμβανόμενες μεταγραφές.
Για τα παραπάνω προβλήματα, ο δέκτης TCP θα αφαιρέσει τα ληφθέντα δεδομένα σύμφωνα με τον αριθμό σειράς. Το επίπεδο TCP δεν ενδιαφέρεται για το πρόβλημα διπλασιασμού. Το κλειδί είναι ότι το επίπεδο εφαρμογής δεν μπορεί να διαβάσει διπλότυπα δεδομένα.
Στον πυρήνα του λειτουργικού συστήματος λήψης, υπάρχει μια δομή δεδομένων - η προσωρινή μνήμη αυτή η δομή δεδομένων είναι παρόμοια με την ουρά αποκλεισμού προτεραιότητας Όταν ο Β λαμβάνει το πακέτο δεδομένων και περνά μέσα από τα επίπεδα στο επίπεδο μεταφοράς ουρά αποκλεισμού για να βάλετε τα δεδομένα και η ουρά θα καθορίσει εάν τα δεδομένα υπάρχουν με βάση τον αριθμό σειράς του πακέτου δεδομένων, εάν υπάρχει (η ύπαρξη σημαίνει ότι το ίδιο πακέτο δεδομένων έχει ληφθεί και έχει διαβαστεί μία φορά στρώμα εφαρμογής), θα απορριφθεί απευθείας. Ένα άλλο σημείο της προσωρινής μνήμης λήψης είναι ότι μπορεί να λύσει το πρόβλημα της τελευταίας εμφάνισης στο δίκτυο.
Εισαγάγετε την περιγραφή της εικόνας εδώ
Όπως φαίνεται στο παραπάνω σχήμα, τα δεδομένα που φτάνουν στο buffer λήψης θα ταξινομηθούν σύμφωνα με τον αριθμό σειράς. εάν ληφθεί ο σειριακός αριθμός του αναμεταδομένου πακέτου δεδομένων είναι 500 Θα απορριφθεί απευθείας, επειδή ο ελάχιστος αριθμός ακολουθίας του buffer λήψης είναι 1000, που σημαίνει ότι το 500 έχει ήδη διαβαστεί από το πρόγραμμα εφαρμογής.
Η απώλεια πακέτων είναι ένα γεγονός μικρής πιθανότητας Όταν ο αριθμός των απωλειών πακέτων αυξάνεται, το δίκτυο θα γίνει μεγάλο πρόβλημα. Καθώς ο αριθμός των αναμεταδόσεων αυξάνεται, το χρονικό διάστημα μεταξύ των αναμεταδόσεων συνεχίζει να μεγαλώνει, επειδή περισσότερες αναμεταδόσεις υποδηλώνουν ότι υπάρχει πρόβλημα με το δίκτυο και οι συχνές αναμεταδόσεις θα καταναλώνουν πόρους. Όταν ο αριθμός των αναμεταδόσεων φτάσει σε ένα κατώφλι, θα σταλεί ένα μήνυμα επαναφοράς με το bit σημαίας RST να έχει οριστεί στο 1 για να απαλειφθεί η ενδιάμεση κατάσταση και των δύο άκρων Εάν το μήνυμα επαναφοράς δεν ανταποκριθεί, η σύνδεση και στα δύο άκρα θα διαγραφεί.
Η αναμετάδοση χρονικού ορίου είναι συμπλήρωμα της απόκρισης επιβεβαίωσης.

2.3 Διαχείριση σύνδεσης

2.3.1 Δημιουργία σύνδεσης: χειραψία τριών κατευθύνσεων

Εικόνα 5
Εισαγάγετε την περιγραφή της εικόνας εδώ
Η δημιουργία μιας σύνδεσης σημαίνει ότι και τα δύο μέρη που επικοινωνούν αποθηκεύουν τις πληροφορίες του άλλου άκρου Η συγκεκριμένη ολοκλήρωση απαιτεί τρεις αλληλεπιδράσεις δικτύου, όπως φαίνεται στο Σχήμα 5.
Η πρώτη φορά της τριπλής χειραψίας πρέπει να ξεκινήσει από τον πελάτη. Η συγκεκριμένη διαδικασία φαίνεται στο Σχήμα 5. Πρώτα, ο πελάτης στέλνει ένα πακέτο SYN, δηλαδή η σημαία SYN στην κεφαλίδα έχει οριστεί σε 1. Στη συνέχεια ο διακομιστής επιστρέφει ένα πακέτο απόκρισης Οι σημαίες ACK και SYN του πακέτου απόκρισης και τα δύο ορίστηκαν σε 1, επειδή ACK και SYN Τα πακέτα δεδομένων με bit σημαίας αποστέλλονται από τον πυρήνα του λειτουργικού συστήματος ταυτόχρονα, ώστε να μπορούν να σταλούν μαζί για βελτίωση της απόδοσης. Τέλος, ο πελάτης στέλνει ένα πακέτο απόκρισης στον διακομιστή και η τριπλή χειραψία ολοκληρώνεται. Τα πακέτα δεδομένων που μεταδίδονται κατά τη διάρκεια αυτής της διαδικασίας δεν περιέχουν επιχειρηματικά δεδομένα.
Η έννοια της τριπλής χειραψίας:
(1) Ρίχνετε πέτρες για να ζητήσετε οδηγίες
Επιβεβαιώστε εάν η σύνδεση επικοινωνίας είναι ομαλή
(2) Διαπραγματευτείτε ορισμένες σημαντικές παραμέτρους
Για παράδειγμα, ο αριθμός σειράς του μεταδιδόμενου πακέτου δεδομένων
(3) Επιβεβαιώστε τις δυνατότητες λήψης και αποστολής και των δύο μερών
Γιατί τρεις χειραψίες; Είναι εντάξει τέσσερις χειραψίες ή δύο χειραψίες;
Αν και η χειραψία τεσσάρων κατευθύνσεων δεν θα επηρεάσει τις κανονικές λειτουργίες, θα μειώσει την απόδοση Η αμφίδρομη χειραψία δεν μπορεί να επιβεβαιώσει πλήρως τις δυνατότητες λήψης και αποστολής του διακομιστή.
Επιπλέον, υπάρχουν δύο ακόμη σημαντικές καταστάσεις που εμπλέκονται εδώ. Η πρώτη είναι η κατάσταση ακρόασης, που σημαίνει ότι ο διακομιστής έχει δεσμεύσει τη θύρα αυτή τη στιγμή και περιμένει τον πελάτη να στείλει ένα πακέτο SYN εύκολο να γίνει κατανοητό και σημαίνει ότι η τριπλή χειραψία έχει ολοκληρωθεί Η κατάσταση μετά την πραγματοποίηση της σύνδεσης.

2.3.2 Αποσύνδεση: κυματίστε τέσσερις φορές.

Σε αντίθεση με την τριπλή χειραψία, η οποία μπορεί να εκκινηθεί μόνο από τον πελάτη πρώτα, τόσο ο διακομιστής όσο και ο πελάτης μπορούν να ξεκινήσουν τη χειραψία τεσσάρων κατευθύνσεων.
Εικόνα 6
Εισαγάγετε την περιγραφή της εικόνας εδώ
Η συγκεκριμένη διαδικασία κυματισμού τέσσερις φορές φαίνεται στο Σχήμα 6. Όταν καλείται η μέθοδος socket.close() στον κώδικα πελάτη ή όταν τελειώσει η διαδικασία, θα σταλεί ένα μήνυμα λήξης FIN στον διακομιστή Επιστροφή του μηνύματος ACK, αλλά θα πρέπει να περιμένει μέχρι τον κωδικό διακομιστή Μόνο μετά την κλήση του κώδικα, όπως το socket.close() μπορεί να σταλεί το μήνυμα λήξης FIN στον πελάτη. Στη συνέχεια, ο πελάτης στέλνει ένα μήνυμα ACK στον διακομιστή και η διαδικασία ολοκληρώνεται κουνώντας τέσσερις φορές.
Το ACK και το FIN στη μέση εδώ δεν μπορούν να συνδυαστούν, επειδή το ACK αποστέλλεται από τον πυρήνα του συστήματος, επομένως θα σταλεί αμέσως όταν ο διακομιστής λάβει το μήνυμα FIN, αλλά το μήνυμα FIN θα πρέπει να περιμένει μέχρι τον κωδικό από την πλευρά του διακομιστή εκτελεί την υποδοχή Μπορεί να σταλεί μετά το κλείσιμο(), και υπάρχει διαφορά ώρας μεταξύ των δύο. Αλλά υπάρχει τρόπος να συνδυαστούν και τα δύο Σε ειδικές περιπτώσεις, το ACK μπορεί να σταλεί με καθυστέρηση, ώστε να μπορεί να σταλεί μαζί με το FIN.
Επιπλέον, υπάρχουν δύο καταστάσεις που εμπλέκονται στις τέσσερις διαδικασίες κυματισμού. Αυτή είναι η κατάσταση στην οποία βρίσκεται ο δέκτης μετά τη λήψη του μηνύματος FIN ότι το μέρος πρέπει να περιμένει αφού λάβει το FIN που αποστέλλεται από τον παραλήπτη και στη συνέχεια στείλει ένα ACK στον δέκτη. ο δέκτης που αναμεταδίδει το FIN Για να εξασφαλιστεί ότι ο αποστολέας μπορεί να λάβει αυτό το FIN, ο χρόνος σε αυτήν την κατάσταση είναι γενικά 2MSI (MSI: ο μέγιστος χρόνος για τη μετάδοση δεδομένων και στα δύο άκρα), που είναι συνήθως 2 λεπτά.
Εάν βρεθεί μεγάλος αριθμός close_wait στον δέκτη, αυτό σημαίνει ότι η μέθοδος close() έχει ξεχαστεί Εάν βρεθεί μεγάλος αριθμός time_wait στον διακομιστή, σημαίνει ότι ο διακομιστής έχει ενεργοποιήσει έναν μεγάλο αριθμό ενεργών αποσύνδεσης TCP. επιχειρήσεις.

2.4 Συρόμενο παράθυρο

Το TCP πρέπει να διασφαλίζει αξιόπιστη μετάδοση, αλλά ταυτόχρονα θέλει να ολοκληρώσει τη μετάδοση δεδομένων όσο το δυνατόν πιο αποτελεσματικά Το συρόμενο παράθυρο είναι ένας μηχανισμός για τη βελτίωση της αποτελεσματικότητας. Αυτός είναι στην πραγματικότητα ένας τρόπος για να το αντισταθμίσετε, επειδή για να διασφαλιστεί η αξιοπιστία, το TCP θυσιάζει πολλές επιδόσεις Ανεξάρτητα από το πώς σύρετε το παράθυρο, η ταχύτητα μετάδοσης δεδομένων δεν μπορεί να είναι μεγαλύτερη από το UDP.
Εικόνα 7
Εισαγάγετε την περιγραφή της εικόνας εδώ
Όπως φαίνεται στο Σχήμα 7, αυτή είναι η διαδικασία μετάδοσης δεδομένων, αλλά η διαδικασία αποστολής ενός πακέτου δεδομένων και λήψης πακέτου δεδομένων απόκρισης εξακολουθεί να είναι σχετικά αργή.
Εικόνα 8
Εισαγάγετε την περιγραφή της εικόνας εδώ
Όπως φαίνεται στο Σχήμα 8, αυτό συμβαίνει μετά την εισαγωγή του μηχανισμού συρόμενου παραθύρου Αντί να αποστέλλεται ένα πακέτο δεδομένων αλλά πολλά πακέτα δεδομένων κάθε φορά, ο χρόνος αναμονής των πακέτων δεδομένων απόκρισης που επιστρέφονται επικαλύπτεται. Χωρίς αναμονή για ACK, ο όγκος των δεδομένων που αποστέλλονται σε παρτίδες είναι το μέγεθος του παραθύρου.
Εικόνα 9
Εισαγάγετε την περιγραφή της εικόνας εδώ
Η διαδικασία του συρόμενου παραθύρου φαίνεται στο Σχήμα 9. Ας υποθέσουμε ότι το μέγεθος του παραθύρου είναι 4 ομάδες Όταν μια ομάδα λαμβάνει ACK, θα αποστέλλονται νέα δεδομένα για να το συμπληρώσουν, κάτι που ισοδυναμεί με μια διαδικασία ολίσθησης. Εάν ο αποστολέας λάβει το ACK του 3001, σημαίνει ότι έχουν ληφθεί τα δεδομένα από το 1001 έως το 3001, οπότε το παράθυρο μπορεί να μετακινήσει δύο κενά προς τα δεξιά.
Τι να κάνετε εάν συμβεί απώλεια πακέτων στο συρόμενο παράθυρο Υπάρχουν δύο καταστάσεις:
(1) Το απεσταλμένο πακέτο δεδομένων έχει χαθεί
Εισαγάγετε την περιγραφή της εικόνας εδώ
Εάν χαθεί μια συγκεκριμένη ομάδα από σταλμένα δεδομένα, παρόλο που στέλνετε πολλές ομάδες δεδομένων στο δέκτη σε παρτίδες, ο αριθμός σειράς επιβεβαίωσης του ληφθέντος ACK εξακολουθεί να είναι αυτός της χαμένης ομάδας έως ότου ο αποστολέας επαναμεταδώσει το datagram. Για παράδειγμα, τα γραφήματα δεδομένων 1001~2000 στην παραπάνω εικόνα χάνονται ακόμα και αν μεταδοθούν αργότερα πολλαπλά σύνολα δεδομένων, το ACK του 1001 θα επιστραφεί έως ότου ο αποστολέας το λάβει ξανά και στη συνέχεια απαντήσει με το ACK του 7001. .
(2) Η απάντηση ACK έχει χαθεί
Εισαγάγετε την περιγραφή της εικόνας εδώ
Εάν χαθεί η απάντηση ACK, τότε δεν χρειάζεται να ανησυχείτε για αυτό, γιατί μπορείτε απλώς να περιμένετε μέχρι να επιστραφεί το ACK άλλων ομάδων δεδομένων, για παράδειγμα, εάν χαθεί το ACK του 1001 στην παραπάνω εικόνα Δεν έχει σημασία Ο αποστολέας του επόμενου ACK του 2001 το έχει λάβει. Το ίδιο ισχύει αν χαθεί το ACK των επόμενων δεδομένων.
Η προαναφερθείσα επεξεργασία της απώλειας πακέτων εξακολουθεί να είναι πολύ αποτελεσματική Εάν το πακέτο δεδομένων χαθεί, απλώς γεμίστε το κενό και μεταδώστε ξανά τα δεδομένα, απλώς αγνοήστε το. Μια τέτοια λειτουργία ονομάζεται γρήγορη αναμετάδοση.
Η αναμετάδοση χρονικού ορίου και η γρήγορη αναμετάδοση είναι διαφορετικές στρατηγικές που υιοθετούνται σε διαφορετικά περιβάλλοντα να ενεργοποιηθεί Γρήγορη αναμετάδοση, η γρήγορη αναμετάδοση είναι ισοδύναμη με την παραλλαγή του χρονικού ορίου αναμετάδοσης κάτω από το συρόμενο παράθυρο.

2.5 Έλεγχος ροής

Όπως αναφέρθηκε προηγουμένως για το συρόμενο παράθυρο, το μέγεθος του παραθύρου είναι μεταβλητό Μπορείτε να ελέγξετε την ταχύτητα αποστολής του αποστολέα αλλάζοντας το μέγεθος του παραθύρου, τόσο περισσότερα δεδομένα αποστέλλονται ανά μονάδα χρόνου και τόσο μεγαλύτερη είναι η απόδοση. Όσο μικρότερο είναι το παράθυρο, τόσο περισσότερα δεδομένα αποστέλλονται ανά μονάδα χρόνου Όσο λιγότερα δεδομένα υπάρχουν, τόσο λιγότερο αποτελεσματικό είναι. Κανονικά, φυσικά, ελπίζουμε ότι η απόδοση είναι όσο το δυνατόν υψηλότερη, αλλά η προϋπόθεση για την υψηλή απόδοση είναι να διασφαλιστεί η αξιοπιστία εάν ο αποστολέας στέλνει πολύ γρήγορα και ο παραλήπτης δεν μπορεί να το χειριστεί, τότε μπορεί να προκύψει απώλεια πακέτων is Ο δέκτης λέει στον αποστολέα ότι η ταχύτητα αποστολής είναι πολύ γρήγορη. Αυτό είναι "έλεγχος ροής".
Εισαγάγετε την περιγραφή της εικόνας εδώ
Όπως φαίνεται στο παραπάνω σχήμα, όπως αναφέρθηκε προηγουμένως, υπάρχει μια προσωρινή μνήμη λήψης δομής δεδομένων στον πυρήνα και ο δέκτης θα επιστρέψει το μέγεθος του ελεύθερου χώρου στην προσωρινή μνήμη λήψης ως μέγεθος παραθύρου. Η προηγούμενη κεφαλίδα TCP έχει ένα πεδίο μεγέθους παραθύρου 16-bit που χρησιμοποιεί το ACK για την αποθήκευση και την επιστροφή αυτών των πληροφοριών Το πεδίο μεγέθους παραθύρου θα τεθεί σε ισχύ μόνο στο ACK.
Εισαγάγετε την περιγραφή της εικόνας εδώ
Όπως φαίνεται στο παραπάνω σχήμα, το ACK θα επιστρέψει το μέγεθος του παραθύρου για να επιτύχει τον σκοπό του ελέγχου ροής Όταν το μέγεθος του παραθύρου επιστρέψει στο 0, ο αποστολέας θα στέλνει περιοδικά μηνύματα ελέγχου που δεν περιέχουν επαγγελματικά δεδομένα για να ενεργοποιήσει το ACK για να γνωρίζει το κατάσταση του buffer Υπάρχει ελεύθερος χώρος.

2.6 Έλεγχος συμφόρησης

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

2.7 Καθυστερημένη απόκριση

Καθυστερημένη απόκριση, όπως υποδηλώνει το όνομα, σημαίνει αναμονή για λίγο πριν την επιστροφή του ACK Αυτό στην πραγματικότητα περιλαμβάνει επίσης το ζήτημα του μεγέθους του παραθύρου, επειδή η καθυστερημένη απόκριση του ACK θα δώσει στον δέκτη περισσότερο χρόνο να καταναλώσει τα δεδομένα στο buffer λήψης, αυξάνοντας έτσι. το μέγεθος του ελεύθερου buffer , το μέγεθος του παραθύρου που επιστρέφεται από το ACK αυξάνεται και ο αποστολέας μπορεί να στείλει περισσότερα δεδομένα σε παρτίδες.
Υπάρχουν δύο μέθοδοι καθυστερημένης απόκρισης:
(1) Καθορίστε την καθυστέρηση σύμφωνα με έναν ορισμένο χρόνο
(2) Σύμφωνα με τον όγκο των δεδομένων που λαμβάνονται
Οι παραπάνω δύο στρατηγικές χρησιμοποιούνται σε συνδυασμό.

2.8 Αποκρίσεις Piggyback

Οι αποκρίσεις Piggyback έχουν εμφανιστεί πριν, ως μηχανισμός που χρησιμοποιείται για τη βελτίωση της απόδοσης μετάδοσης. Αυτή είναι η περίπτωση όπου το ACK και το SYN επιστρέφονται χρησιμοποιώντας το ίδιο πακέτο δεδομένων στην τριπλή χειραψία. Υπάρχει επίσης μια κατάσταση παρόμοια με αυτή στο Four Waves Επειδή το ACK και το FIN αποστέλλονται σε διαφορετικές χρονικές στιγμές, οι αποκρίσεις piggyback δεν χρειάζεται να σταλούν τόσο γρήγορα με την καθυστερημένη απάντηση μπορούν να συνδυαστούν με τα δύο FIN Οι δευτερεύουσες μεταδόσεις συνδυάζονται σε μια ενιαία μετάδοση με piggyback στις απαντήσεις.

2.9 Προσανατολισμός σε ροές byte

Το byte-oriented είναι ένας μηχανισμός του TCP που πρέπει να δοθεί προσοχή είναι το πρόβλημα κολλήματος πακέτων ροή byte, ο διακομιστής μπορεί Η ανάγνωση πολλών byte μπορεί επίσης να διαβάσει ένα byte, το οποίο μπορεί εύκολα να προκαλέσει αυτό το πρόβλημα.
Υπάρχουν δύο λύσεις στο παραπάνω πρόβλημα της κολλώδους σακούλας:
(1) Χρησιμοποιήστε διαχωριστικά
Οποιοδήποτε σύμβολο μπορεί να χρησιμοποιηθεί εφόσον δεν υπάρχει στο πακέτο αιτήματος
(2) Συμφωνήστε για το μήκος του πακέτου δεδομένων
Ωστόσο, στις περισσότερες περιπτώσεις, οι προγραμματιστές Java δεν χρησιμοποιούν απευθείας το TCP, αλλά χρησιμοποιούν έτοιμα πρωτόκολλα όπως το http, ή εφαρμόζουν την επικοινωνία δικτύου που βασίζεται σε εργαλεία όπως το protobuffer ή το dubbo. Χαμένος.

2.10 Μη φυσιολογικές καταστάσεις

(1) Και στα δύο άκρα της επικοινωνίας, η διαδικασία στο ένα άκρο διακόπηκε.
Το λειτουργικό σύστημα συμπληρώνει τέσσερα κύματα και κυματίζει το PCB.
(2) Ένας συγκεκριμένος κεντρικός υπολογιστής τερματίζεται (κανονική διαδικασία)
Η πρώτη πιθανότητα είναι ότι το λειτουργικό σύστημα έχει ολοκληρώσει τέσσερα κύματα. Η δεύτερη πιθανότητα είναι ότι ο δέκτης δεν έχει απόκριση ACK μετά την αποστολή του FIN που κλείνει, αφού όλα είναι κλειστά Οι αποθηκευμένες πληροφορίες (μνήμη) έχουν εξαφανιστεί.
(3) Η παροχή ρεύματος ενός συγκεκριμένου κεντρικού υπολογιστή είναι απενεργοποιημένη.
Όταν ο κεντρικός υπολογιστής απενεργοποίησης είναι διακομιστής, το πακέτο δεδομένων που αποστέλλεται από τον πελάτη θα επαναμεταδοθεί χωρίς ACK Εάν δεν επιτευχθεί κανένα αποτέλεσμα μετά από πολλαπλές αναμεταδόσεις, η σύνδεση θα διαγραφεί.
Όταν ο κεντρικός υπολογιστής απενεργοποίησης είναι πελάτης και ο διακομιστής δεν έχει λάβει ένα πακέτο δεδομένων για μεγάλο χρονικό διάστημα, θα στέλνει περιοδικά ένα πακέτο παλμών χωρίς ωφέλιμο φορτίο, απλώς για να ενεργοποιήσει ένα ACK Εάν ο πελάτης είναι κανονικός, θα επιστρέψει ACK, διαφορετικά δεν θα το λάβει εάν δεν ληφθεί απάντηση από τον πελάτη αφού σταλεί πολλές φορές στη σειρά, αλλά δεν υπάρχει απάντηση, μπορεί να θεωρηθεί ότι ο πελάτης είναι εκτός λειτουργίας και οι πληροφορίες σύνδεσης έχουν διαγραφεί.
Επιπλέον, παρόλο που το TCP υλοποιεί πακέτα καρδιακών παλμών, ο κύκλος είναι πολύ μεγάλος. Στην πραγματική ανάπτυξη, τα πακέτα καρδιακών παλμών στο επίπεδο εφαρμογής θα υλοποιηθούν, με υψηλότερη συχνότητα και μικρότερη περίοδο (δεύτερο επίπεδο/επίπεδο χιλιοστού του δευτερολέπτου αποστέλλονται πακέτα παλμών A->B και το B->A απαντά με ένα pong). Μόλις κολλήσει η συσκευή, μπορείτε να βρείτε γρήγορα το πρόβλημα.
(4) Το καλώδιο δικτύου έχει αποσυνδεθεί
Ουσιαστικά, είναι η τρίτη περίπτωση, εάν ο αποστολέας δεν λάβει το ACK, θα λήξει και θα στείλει ξανά το RST και μετά θα διαγράψει τη σύνδεση μονομερώς, εάν ο δέκτης δεν λάβει το πακέτο δεδομένων Εάν δεν λάβει το ACK, θα στείλει απλώς ένα πακέτο παλμών.

2.11 Συμπλήρωμα

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