Δικτύωση

Γνώση Υπολογιστών >> Δικτύωση >  >> Ασφάλεια Δικτύων

Μπορείτε να κάνετε ένα πρωτόκολλο χωρίς σύνδεση;

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

Δείτε πώς μπορείτε να προσθέσετε αξιοπιστία σε ένα πρωτόκολλο χωρίς σύνδεση όπως το UDP:

* checksums/crc: Αυτά χρησιμοποιούνται ήδη συνήθως στο UDP για την ανίχνευση της διαφθοράς δεδομένων. Εάν το checksum δεν ταιριάζει, ο δέκτης απορρίπτει το κατεστραμμένο πακέτο. Αυτό δεν εγγυάται την παράδοση, αλλά εξασφαλίζει την ακεραιότητα των δεδομένων.

* Αριθμοί ακολουθίας: Αναθέστε έναν μοναδικό αριθμό ακολουθίας σε κάθε πακέτο. Ο δέκτης μπορεί στη συνέχεια να παραγγείλει σωστά πακέτα, ακόμη και αν φτάσουν εκτός παραγγελίας. Αυτό χειρίζεται την αναδιάταξη, ένα κοινό ζήτημα με το UDP.

* Ευχαριστίες (ACKS): Ο δέκτης στέλνει ένα πακέτο επιβεβαίωσης (ACK) για κάθε σωστή λήψη και παραγγέλθηκε πακέτο. Εάν ο αποστολέας δεν λάβει ένα ACK μέσα σε μια περίοδο χρονικού ορίου, αναμεταδίδει το πακέτο. Αυτό είναι ζωτικής σημασίας για την εξασφάλιση αξιόπιστης παράδοσης.

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

* παράθυρο (προαιρετικό αλλά αποτελεσματικό): Για να βελτιώσετε την αποτελεσματικότητα, μπορείτε να εφαρμόσετε ένα παράθυρο ολίσθησης. Αυτό επιτρέπει στον αποστολέα να στείλει πολλαπλά πακέτα πριν περιμένει ACKs, βελτιώνοντας τη διακίνηση. Ωστόσο, η διαχείριση του μεγέθους του παραθύρου και των αναγνωρίσεων χειρισμού γίνεται πιο περίπλοκη.

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

Παράδειγμα εφαρμογής (εννοιολογική):

Φανταστείτε μια απλή εφαρμογή που βασίζεται στην κορυφή του UDP για να στείλει αξιόπιστα αρχεία.

1. αποστολέας: Σπάει το αρχείο σε πακέτα, προσθέτει αριθμούς αλληλουχίας και ελέγχου ελέγχου σε κάθε πακέτο. Στέλνει πακέτα και ξεκινά ένα χρονοδιακόπτη για καθένα. Με το χρονικό όριο, αναμεταδίδει το πακέτο. Περιμένει επίσης ACKs.

2. δέκτης: Λαμβάνει πακέτα, επιταγές ελέγχου ελέγχου. Εάν ένα πακέτο είναι έγκυρο, στέλνει ένα ACK. Εάν τα πακέτα είναι εκτός λειτουργίας, τα απομακρύνει μέχρι να φτάσουν τα πακέτα που λείπουν ή να αναμεταδοτούν. Εάν ένα πακέτο είναι διεφθαρμένο, το απορρίπτει και δεν στέλνει ένα ACK για αυτόν τον αριθμό ακολουθίας.

Περιορισμοί:

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

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

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα