Τι είναι το σύνδρομο Silly Window - Εξήγηση και Πρόληψη

Τα δεδομένα(Data) μεταφέρονται μέσω του δικτύου και του Διαδικτύου(Internet) χρησιμοποιώντας το TCP/IP Protocol . Το TCP/IP δεν είναι τέλειο, αλλά είναι πιο εύκολο να εφαρμοστεί σε σύγκριση με άλλα πρωτόκολλα που θεωρούνται για την επικοινωνία δεδομένων… όπως το μοντέλο ISO OSI . Όπως με κάθε τεχνικό πράγμα, το TCP/IP έχει επίσης κάποια ελαττώματα και το Silly Window Syndrome είναι δημιουργία ενός από αυτά τα ελαττώματα. Για να κατανοήσετε τι είναι το σύνδρομο ανόητου παραθύρου(Silly Window Syndrome) ή SWS , θα πρέπει πρώτα να κατανοήσετε τον υποκείμενο μηχανισμό της επικοινωνίας δεδομένων στο TCP/IP .

Σύνδρομο Silly Window

σύνδρομο ανόητου παραθύρου

Κατανόηση του παραθύρου και του μεγέθους του

Όταν δύο σημεία επικοινωνούν υπό το TCP/IP , περιλαμβάνει έναν μηχανισμό επιβεβαίωσης. Αυτός ο μηχανισμός αναγνώρισης είναι που προκαλεί το σύνδρομο Silly Window,(Silly Window Syndrome) όπως εξηγείται περαιτέρω. Τα σημεία μπορεί να αναφέρονται σε δύο υπολογιστές, πελάτη και διακομιστή κ.λπ.

SWS is caused by the receiver advancing the right window edge whenever it has any new buffer space available to receive data and by the sender using any incremental window, no matter how small, to send more data. The result can be a stable pattern of sending tiny data segments, even though both sender and receiver have a large total buffer space for the connection, says MSDN.

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

Έτσι, όταν ο B λέει ότι το 100B είναι διαθέσιμο για το επόμενο μήνυμα, το 100B είναι το παράθυρο στο Σύνδρομο Silly Window(Silly Window Syndrome) . Δηλαδή, είναι το μέγεθος buffer. Με το δικό του ελάττωμα, ο μηχανισμός TCP/IP μπορεί να μειώσει το μέγεθος της προσωρινής μνήμης για κάθε επικοινωνία/δεδομένο που προέρχεται από το Α. Δηλαδή, κάθε φορά που ο Α στέλνει ένα μήνυμα, ο Β υποθέτει ότι το μέγεθος του buffer είναι μειωμένο και στέλνει μικρότερο αριθμό. Έτσι, το μέγεθος του παραθύρου συνεχίζει να μειώνεται και σε ένα σημείο, η επικοινωνία σταματά μόλις το B στέλνει 0B ως μέγεθος παραθύρου.

Πώς λειτουργεί το σύνδρομο Silly Window

Σύμφωνα με το παραπάνω παράδειγμα των A και B, εάν ο B στείλει 1000B ως μέγεθος παραθύρου, ο A θα το χωρίσει σε δύο 500B και θα στείλει δύο πακέτα των 500B. Μετά την παραλαβή του πρώτου πακέτου, ο B θα στείλει μια επιβεβαίωση λέγοντας ότι το 500B είναι διαθέσιμο για το παράθυρο, καθώς το δεύτερο πακέτο δεν έχει ακόμη παραληφθεί. Το A υποθέτει ότι το 500B είναι το μέγεθος του παραθύρου και στέλνει δύο πακέτα των 250B κατά συνέπεια. Ενώ στο B, χρησιμοποιείται το 500B και μόλις λαμβάνεται το 500, θα στείλει το 0B ως διαθέσιμο. Σε αυτό το σημείο, ο A θα υποθέσει ότι δεν υπάρχει διαθέσιμο παράθυρο, αν και μπορεί να συμβεί το buffer να είναι άδειο καθώς ο επεξεργαστής χρησιμοποίησε τα δεδομένα εκεί. Το A θα συνεχίσει να στέλνει ένα μικρότερο πακέτο για να δει αν είναι διαθέσιμο κάποιο παράθυρο. Εάν τα περιεχόμενα του buffer στο B δεν έχουν ακόμη αφαιρεθεί, θα εξακολουθεί να λαμβάνει 0 ως απάντηση/επιβεβαίωση.

Έτσι, το μέγεθος του παραθύρου συνεχίζει να μειώνεται καθώς ο Β στέλνει επιβεβαίωση κάθε φορά που λαμβάνει ένα πακέτο από τον Α. Αυτό το μέγεθος είναι συνήθως μικρότερο από την προηγούμενη επιβεβαίωση, καθώς ο Β λαμβάνει πακέτα δεδομένων σε μέρη. Δεν θα υπήρχε πρόβλημα εάν ο Α μπορούσε να στείλει ένα πακέτο αρκετά μεγάλο ώστε να καλύψει το μέγεθος του buffer στο B κάθε φορά. Αλλά ότι θα απαιτούσε πρόσθετους μηχανισμούς και ως εκ τούτου το σύνδρομο Silly Window(Silly Window Syndrome) . Η επικοινωνία διακόπτεται αφού ο Α λάβει 0 δύο ή τρεις φορές.

Πώς να αποτρέψετε το σύνδρομο Silly Window(Silly Window Syndrome) ( SWS )

Υπάρχει ένας απλός αλγόριθμος που πρέπει να εφαρμοστεί για να απαλλαγούμε από το SWS . Μόλις λάβει το αρχικό πακέτο, ο Β στέλνει το μισό από τον πραγματικά διαθέσιμο χώρο ως παράθυρο. Αυτό θα κάνει τον Α να στείλει μικρότερα πακέτα. Κατά συνέπεια, όταν τα πακέτα γίνονται πολύ μικρότερα, τότε ο B στέλνει το συνολικό μέγεθος buffer έτσι ώστε ο A να αρχίσει να στέλνει μεγαλύτερα byte δεδομένων ξανά.

Με άλλα λόγια, εάν το 1000B είναι διαθέσιμο, το B στέλνει το 500B ως επιβεβαίωση. Αντίστοιχα, ο Α στέλνει 250B x ​​2 πακέτα. Για αυτό, ο Α λαμβάνει 100Β ως επιβεβαίωση. Όταν λαμβάνει πακέτο 50B, το B στέλνει 1000B – 50B στο A. Αυτό κάνει ολόκληρη τη συνομιλία ξανά λειτουργική. Αυτό μπορεί να προκαλέσει μια μικρή καθυστέρηση στην επεξεργασία, αλλά θα αποτρέψει την εμφάνιση του συνδρόμου ανόητου παραθύρου(Silly Window Syndrome) και θα σταματήσει ολόκληρη τη συνομιλία.

Συνοψίζοντας, το SWS βασίζεται στο μέγεθος buffer που είναι διαθέσιμο στον παραλήπτη και στο υποτιθέμενο μέγεθος που υπολογίζεται από τον αποστολέα. Για να αποτραπεί το SWS , εισάγεται μια καθυστέρηση και επαναλαμβάνεται ένα σκόπιμα μικρότερο μέγεθος παραθύρου έως ότου το μέγεθος του πακέτου γίνει πολύ μικρό. Στη συνέχεια, ο παραλήπτης αποκαλύπτει το πραγματικά διαθέσιμο μέγεθος παραθύρου. Η όλη διαδικασία συνεχίζει να επαναλαμβάνεται μέχρι να ολοκληρωθεί η επικοινωνία.

Αν και μπορεί να χρησιμοποίησα τις λέξεις window και buffer εναλλακτικά. Δεν εννοώ καμία διαφορά μεταξύ τους. Στις μελέτες SWS , το buffer είναι το παράθυρο.



About the author

Είμαι έμπειρος διαχειριστής Windows 10 και Windows 11/10 με κάποια εμπειρία στο Edge. Έχω πλήθος γνώσεων και εμπειρίας να προσφέρω σε αυτόν τον τομέα, γι' αυτό πιστεύω ότι οι δεξιότητές μου θα ήταν πολύτιμο πλεονέκτημα για την εταιρεία σας. Η πολυετής εμπειρία μου τόσο στα Windows 10 όσο και στα Edge μου δίνει τη δυνατότητα να μαθαίνω γρήγορα νέες τεχνολογίες, να επιλύω γρήγορα προβλήματα και να αναλαμβάνω τον έλεγχο όταν πρόκειται για τη λειτουργία της επιχείρησής σας. Επιπλέον, η εμπειρία μου με τα Windows 10 και τον Edge με κάνει να γνωρίζω πολύ καλά όλες τις πτυχές του λειτουργικού συστήματος, κάτι που θα ήταν επωφελές για τη διαχείριση διακομιστών ή τη διαχείριση εφαρμογών λογισμικού.



Related posts