Was ist das Silly Window Syndrom – Erklärung und Vorbeugung

Daten(Data) werden über das Netzwerk und das Internet unter Verwendung des TCP/IP Protocol übertragen . TCP/IP ist nicht perfekt, aber im Vergleich zu anderen Protokollen, die für die Datenkommunikation gedacht sind, einfacher zu implementieren, wie z. B. dem ISO-OSI -Modell. Wie bei jeder technischen Sache hat auch TCP/IP einige Fehler und das Silly Window Syndrome ist eine Kreation eines dieser Fehler. Um zu verstehen, was Silly Window Syndrome oder SWS ist, müssen Sie zunächst den zugrunde liegenden Mechanismus der Datenkommunikation in TCP/IP verstehen .

Silly-Window-Syndrom

Dummes Fenstersyndrom

Verständnis des Fensters und seiner Größe

Wenn zwei Punkte unter TCP/IP kommunizieren , ist ein Bestätigungsmechanismus erforderlich. Dieser Bestätigungsmechanismus verursacht das Silly-Window-Syndrom(Silly Window Syndrome) , wie weiter unten erläutert wird. Punkte können sich auf zwei Computer beziehen, Client und Server usw.

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.

Wenn ein Computer, sagen wir A, ein Datenpaket an einen anderen Computer B sendet, muss letzterer bestätigen und antworten, dass er das Datenpaket erhalten hat. Zusammen mit der Bestätigung muss es auch die Größe des Puffersatzes senden, der für diesen Kommunikationsthread reserviert ist. Dies ist im Allgemeinen die Anzahl der für die Kommunikation freigesetzten Bytes.

Wenn B also sagt, dass 100B für die nächste Nachricht verfügbar ist, ist die 100B das Fenster im Silly Window Syndrome . Das heißt, es ist die Puffergröße. Mit seinem eigenen Fehler kann der TCP/IP -Mechanismus die Puffergröße für jede Kommunikation/Daten, die von A kommen, reduzieren. Das heißt, wann immer A eine Nachricht sendet, nimmt B an, dass die Puffergröße reduziert ist und sendet eine kleinere Zahl. Somit wird die Fenstergröße weiter reduziert und an einem Punkt stoppt die Kommunikation einfach, wenn B 0B als Fenstergröße sendet.

Wie funktioniert das Silly Window Syndrom?

Wenn B gemäß dem obigen Beispiel von A und B 1000 B als Fenstergröße sendet, wird A es in zwei 500 B aufteilen und zwei Pakete von 500 B senden. Nach Erhalt des ersten Pakets sendet B eine Bestätigung, dass 500B für das Fenster verfügbar ist, da das zweite Paket noch empfangen werden muss. A nimmt an, dass 500B die Fenstergröße ist und sendet folglich zwei Pakete von 250B. Während bei B 500B verwendet wird und 500 gerade empfangen wird, wird 0B als verfügbar gesendet. An diesem Punkt nimmt A an, dass kein Fenster verfügbar ist, obwohl es vorkommen kann, dass der Puffer leer ist, da der Prozessor die Daten dort verbraucht hat. A sendet immer noch ein kleineres Paket, um zu sehen, ob irgendein Fenster verfügbar ist. Wenn der Inhalt des Puffers bei B noch nicht entfernt ist, erhält es immer noch 0 als Antwort/Bestätigung.

Somit verringert sich die Fenstergröße weiter, da B jedes Mal eine Bestätigung sendet, wenn es ein Paket von A empfängt. Diese Größe ist normalerweise kleiner als die vorherige Bestätigung, da B Datenpakete in Teilen empfängt. Es gäbe kein Problem, wenn A ein Paket senden könnte, das groß genug ist, um die Puffergröße auf B gleichzeitig abzudecken. Aber das würde zusätzliche Mechanismen erfordern und daher das Silly-Window-Syndrom(Silly Window Syndrome) . Die Kommunikation stoppt, nachdem A zwei- oder dreimal 0 erhält.

So verhindern Sie das Silly Window Syndrom(Silly Window Syndrome) ( SWS )

Es gibt einen einfachen Algorithmus, der implementiert werden muss, um SWS(SWS) loszuwerden . Beim Empfang des Anfangspakets sendet B die Hälfte des tatsächlich verfügbaren Platzes als Fenster. Dadurch sendet A kleinere Pakete. Wenn die Pakete zu klein werden, sendet B folglich die gesamte Puffergröße, damit A wieder mit dem Senden größerer Datenbytes beginnen kann.

Mit anderen Worten, wenn 1000B verfügbar sind, sendet B 500B als Bestätigung. Dementsprechend sendet A 250B x ​​2 Pakete. Dafür erhält A 100B als Quittung. Wenn es ein 50-B-Paket erhält, sendet B 1000 B – 50 B an A. Dadurch wird die gesamte Konversation wieder funktionsfähig. Dies kann zu einer kleinen Verzögerung bei der Verarbeitung führen, verhindert jedoch, dass das Silly Window-Syndrom(Silly Window Syndrome) auftritt und die gesamte Konversation stoppt.

Zusammenfassend basiert SWS auf der Puffergröße, die dem Empfänger zur Verfügung steht, und der angenommenen Größe, die vom Sender berechnet wird. Um SWS zu verhindern , wird eine Verzögerung eingeführt und eine absichtlich kleinere Fenstergröße hin- und herbewegt, bis die Paketgröße zu klein wird. Dann gibt der Empfänger die tatsächlich verfügbare Fenstergröße bekannt. Der gesamte Vorgang wird wiederholt, bis die Kommunikation abgeschlossen ist.

Obwohl ich die Wörter Fenster und Puffer möglicherweise synonym verwendet habe. Ich meine keinen Unterschied zwischen ihnen. In SWS- Studien ist der Puffer das Fenster.



About the author

Ich bin ein iOS-Entwickler mit über 10 Jahren Erfahrung. Ich habe mich auf die Entwicklung von Apps für iPhone und iPad spezialisiert. Ich habe Erfahrung beim Erstellen von Benutzerabläufen, dem Erstellen von benutzerdefinierten Entwicklungskits (CDKs) und der Arbeit mit verschiedenen App-Entwicklungsframeworks. In meiner früheren Arbeit habe ich auch Tools entwickelt, die bei der Verwaltung von Apples App Store helfen, darunter ein Produktmanagement-Tool und ein App-Übermittlungstool.



Related posts