Wat is Silly Window Syndrome - Uitleg en preventie

Gegevens(Data) worden overgedragen via het netwerk en internet met behulp van het TCP/IP Protocol . De TCP/IP is niet perfect, maar is gemakkelijker te implementeren in vergelijking met andere protocollen die zijn getheoretiseerd voor datacommunicatie... zoals het ISO OSI -model. Zoals met elk technisch ding, heeft ook TCP/IP enkele gebreken en Silly Window Syndrome is een creatie van een van die gebreken. Om te begrijpen wat Silly Window Syndrome of SWS is, moet u eerst het onderliggende mechanisme van datacommunicatie in TCP/IP begrijpen .

Silly Window Syndroom

domme venster syndroom

Het raam en de grootte ervan begrijpen

Wanneer twee punten communiceren onder TCP/IP , is er een bevestigingsmechanisme nodig. Dit erkennende mechanisme is de oorzaak van het Silly Window Syndrome , zoals verder uitgelegd. Punten kunnen verwijzen naar twee computers, client en server, enz.

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.

Wanneer een computer, zeg A, een datapakket naar een andere computer B stuurt, moet deze laatste bevestigen en antwoorden dat het het datapakket heeft ontvangen. Samen met de bevestiging moet het ook de grootte van de buffer verzenden die is apart gezet voor die communicatiethread. Dit is over het algemeen het aantal bytes dat vrijkomt voor communicatie.

Dus als B zegt dat 100B beschikbaar is voor het volgende bericht, is de 100B het venster in Silly Window Syndrome . Dat wil zeggen, het is de buffergrootte. Met zijn eigen fout kan het TCP/IP -mechanisme de buffergrootte verkleinen voor elke communicatie/data die van A komt. Dat wil zeggen dat wanneer A een bericht verzendt, B ervan uitgaat dat de buffergrootte kleiner is en een kleiner aantal verzendt. Dus de venstergrootte blijft kleiner en op een gegeven moment stopt de communicatie gewoon als B 0B verzendt als de venstergrootte.

Hoe werkt Silly Window Syndrome?

Volgens het bovenstaande voorbeeld van A en B, als B 1000B als venstergrootte verzendt, splitst A het in twee 500B en verzendt twee pakketten van 500B. Na ontvangst van het eerste pakket, stuurt B een bevestiging dat 500B beschikbaar is voor het venster omdat het tweede pakket nog moet worden ontvangen. A neemt aan dat 500B de venstergrootte is en verzendt bijgevolg twee pakketten van 250B. Terwijl bij B 500B wordt gebruikt en 500 zojuist is ontvangen, wordt 0B verzonden als beschikbaar. Op dit punt gaat A ervan uit dat er geen venster beschikbaar is, hoewel het kan gebeuren dat de buffer leeg is omdat de processor de gegevens daar heeft opgebruikt. A zal nog steeds een kleiner pakket sturen om te zien of er een venster beschikbaar is. Als de inhoud van de buffer bij B nog niet is verwijderd, krijgt deze alsnog 0 als antwoord/bevestiging.

De grootte van het venster blijft dus kleiner worden als B een bevestiging verzendt telkens wanneer het een pakket van A ontvangt. Deze grootte is gewoonlijk kleiner dan de vorige bevestiging omdat B datapakketten in delen ontvangt. Er zou geen probleem zijn als A een pakket zou kunnen verzenden dat groot genoeg is om de buffergrootte op B tegelijk te dekken. Maar dat het aanvullende mechanismen en dus Silly Window Syndrome zou vereisen . De communicatie stopt nadat A twee of drie keer 0 heeft ontvangen.

Hoe Silly Window Syndrome ( SWS ) te voorkomen

Er moet een eenvoudig algoritme worden geïmplementeerd om van SWS af te komen . Bij ontvangst van het initiële pakket stuurt B de helft van de werkelijk beschikbare ruimte als venster. Dat zorgt ervoor dat A kleinere pakketten verzendt. Bijgevolg, wanneer de pakketten te kleiner worden, verzendt B de totale buffergrootte zodat A opnieuw grotere databytes kan verzenden.

Met andere woorden, als 1000B beschikbaar is, stuurt B 500B als bevestiging. Dienovereenkomstig verzendt A 250B x ​​2 pakketten. Hiervoor krijgt A 100B als ontvangstbewijs. Wanneer het 50B-pakket ontvangt, stuurt B 1000B - 50B naar A. Dat maakt het hele gesprek weer operationeel. Dit kan een kleine vertraging in de verwerking veroorzaken, maar zal voorkomen dat Silly Window Syndrome optreedt en het hele gesprek stopt.

Kortom, SWS is gebaseerd op de buffergrootte die beschikbaar is voor de ontvanger en de veronderstelde grootte die door de afzender wordt berekend. Om SWS te voorkomen , wordt een vertraging geïntroduceerd en wordt een opzettelijk kleinere venstergrootte beantwoord totdat de pakketgrootte te klein wordt. Vervolgens onthult de ontvanger de daadwerkelijk beschikbare venstergrootte. Het hele proces blijft zich herhalen totdat de communicatie is voltooid.

Hoewel ik de woorden venster en buffer misschien door elkaar heb gebruikt. Ik bedoel geen enkel verschil tussen hen. In SWS- onderzoeken is de buffer het venster.



About the author

Ik ben een softwareontwikkelaar met meer dan 10 jaar ervaring. Ik ben gespecialiseerd in Mac-programmering en heb duizenden regels code geschreven voor verschillende Mac-programma's, waaronder maar niet beperkt tot: TextEdit, GarageBand, iMovie en Inkscape. Ook heb ik ervaring met Linux en Windows ontwikkeling. Dankzij mijn vaardigheden als ontwikkelaar kan ik hoogwaardige, uitgebreide tutorials schrijven voor verschillende softwareontwikkelingsplatforms - van macOS tot Linux - waardoor mijn tutorials de perfecte keuze zijn voor diegenen die meer willen weten over de tools die ze gebruiken.



Related posts