Vad är Silly Window Syndrome - Förklaring och förebyggande

Data överförs över nätverket och Internet med hjälp av TCP/IP Protocol . TCP TCP/IP är inte perfekt men är lättare att implementera jämfört med andra teoretiserade protokoll för datakommunikation... som ISO OSI- modellen. Som med alla tekniska saker har TCP/IP också några brister och Silly Window Syndrome är en skapelse av en av dessa brister. För att förstå vad Silly Window Syndrome eller SWS är, måste du först förstå den underliggande mekanismen för datakommunikation i TCP/IP .

Silly Window syndrom

dumt fönster syndrom

Förstå fönstret och dess storlek

När två punkter kommunicerar under TCP/IP involverar det en bekräftelsemekanism. Denna erkännande mekanism är vad som orsakar Silly Window Syndrome som förklaras vidare. Poäng kan hänvisa till två datorer, klient och server, etc.

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.

När en dator, säg A, skickar ett datapaket till en annan dator B, måste den senare bekräfta och svara att den tagit emot datapaketet. Tillsammans med bekräftelsen måste den också skicka storleken på bufferten som är åtskild för den kommunikationstråden. Detta är i allmänhet antalet byte som är fria för kommunikation.

Så när B säger att 100B är tillgängligt för nästa meddelande, är 100B fönstret i Silly Window Syndrome . Det vill säga, det är buffertstorleken. Med sin egen brist kan TCP/IP mekanismen minska buffertstorleken för varje kommunikation/data som kommer från A. Det vill säga, närhelst A skickar ett meddelande, antar B att buffertstorleken är reducerad och skickar ett mindre antal. Sålunda fortsätter fönsterstorleken att minska och vid en punkt stannar kommunikationen bara när B skickar 0B som fönsterstorlek.

Hur fungerar Silly Window Syndrome

Enligt ovanstående exempel på A och B, om B skickar 1000B som fönsterstorlek, kommer A att dela upp det i två 500B och skicka två paket med 500B. Vid mottagande av det första paketet kommer B att skicka en bekräftelse som säger att 500B är tillgänglig för fönstret eftersom det andra paketet ännu inte har tagits emot. A antar att 500B är fönsterstorleken och skickar två paket på 250B följaktligen. Medan vid B används 500B och 500 precis har tagits emot, kommer det att skicka 0B som tillgängligt. Vid denna tidpunkt kommer A att anta att inget fönster är tillgängligt även om det kan hända att bufferten är tom eftersom processorn förbrukade datan där. A kommer fortfarande att skicka ett mindre paket för att se om något fönster är tillgängligt. Om innehållet i bufferten vid B ännu inte har tagits bort kommer den fortfarande att få 0 som svar/bekräftelse.

Således fortsätter fönsterstorleken att minska när B skickar bekräftelse varje gång den tar emot ett paket från A. Denna storlek är vanligtvis mindre än den tidigare bekräftelsen eftersom B tar emot datapaket i delar. Det skulle inte vara några problem om A kunde skicka ett paket som är tillräckligt stort för att täcka buffertstorleken på B åt gången. Men att det skulle kräva ytterligare mekanismer och därav Silly Window Syndrome . Kommunikationen avbryts efter att A fått 0 två eller tre gånger.

Hur man förhindrar Silly Window Syndrome ( SWS )

Det finns en enkel algoritm som ska implementeras för att bli av med SWS . När B tar emot det initiala paketet skickar B hälften av det verkligt tillgängliga utrymmet som fönstret. Det gör att A skickar mindre paket. Följaktligen, när paketen blir för mindre, skickar B den totala buffertstorleken så att A kan börja skicka större databytes igen.

Med andra ord, om 1000B är tillgängligt, skickar B 500B som bekräftelse. Följaktligen skickar A 250B x ​​2 paket. För detta får A 100B som bekräftelse. När den tar emot 50B-paket skickar B 1000B – 50B till A. Det gör att hela konversationen fungerar igen. Detta kan inducera en liten fördröjning i bearbetningen men kommer att förhindra att Silly Window Syndrome uppstår och stoppar hela konversationen.

Sammanfattningsvis baseras SWS på den buffertstorlek som är tillgänglig för mottagaren och den antagna storleken beräknad av avsändaren. För att förhindra SWS , införs en fördröjning och en avsiktlig mindre fönsterstorlek återges tills paketstorleken blir för liten. Sedan avslöjar mottagaren faktiskt tillgänglig fönsterstorlek. Hela processen fortsätter att upprepas tills kommunikationen är klar.

Även om jag kan ha använt orden fönster och buffert omväxlande. Jag menar ingen skillnad mellan dem. I SWS- studier är bufferten fönstret.



About the author

Efter nästan 20 år i teknikbranschen har jag lärt mig mycket om Apples produkter och hur man anpassar dem efter mina behov. I synnerhet vet jag hur man använder iOS-plattformen för att skapa anpassade utseenden och interagera med mina användare genom applikationsinställningar. Den här erfarenheten har gett mig värdefulla insikter om hur Apple designar sina produkter och hur man bäst kan förbättra deras användarupplevelse.



Related posts