Разни

Какво е синдром на глупавия прозорец - обяснение и профилактика

Какво е синдром на глупавия прозорец - обяснение и профилактика

Данните се прехвърлят през мрежата и Интернет с помощта на TCP / IP протокол. TCP / IP не е перфектен, но е по-лесен за изпълнение в сравнение с други протоколи, теоретизирани за комуникация на данни ... като ISO OSI модел. Както при всяко техническо нещо, TCP / IP също има някои недостатъци и Глупав синдром на прозореца е създаване на един от тези недостатъци. За да разберете какво е Silly Window Syndrome или SWS, първо ще трябва да разберете основния механизъм на комуникация на данни в TCP / IP.

Глупав синдром на прозореца

Разбиране на прозореца и неговия размер

Когато две точки комуникират под TCP / IP, това включва механизъм за потвърждаване. Този механизъм за разпознаване причинява синдрома на глупавите прозорци, както е обяснено по-нататък. Точките могат да се отнасят за два компютъра, клиент и сървър и т.н.

SWS се причинява от приемника, който придвижва десния край на прозореца, когато има налично ново буферно пространство за получаване на данни, и от подателя, използващ всеки допълнителен прозорец, независимо колко малък е, за изпращане на повече данни. Резултатът може да бъде стабилен модел на изпращане на малки сегменти от данни, въпреки че и подателят, и получателят имат голямо общо буферно пространство за връзката, казва MSDN.

Когато компютър, да речем А, изпрати пакет данни на друг компютър Б, той трябва да потвърди и отговори, че е получил пакета данни. Заедно с потвърждението, той също трябва да изпрати размера на буфера, отделен за тази комуникационна нишка. Това обикновено е броят на байтовете, освободени за комуникация.

Така че, когато B казва, че 100B е на разположение за следващото съобщение, 100B е прозорецът в Silly Window Syndrome. Тоест, това е размерът на буфера. Със своя недостатък, TCP / IP механизмът може да намали размера на буфера за всяка комуникация / данни, идващи от A. Тоест, когато A изпраща съобщение, B приема, че размерът на буфера е намален и изпраща по-малък номер. По този начин размерът на прозореца продължава да намалява и в даден момент комуникацията просто спира, когато B изпраща 0B като размер на прозореца.

Как работи глупавият синдром на прозореца

Според горния пример за A и B, ако B изпрати 1000B като размер на прозореца, A ще го раздели на две 500B и ще изпрати два пакета от 500B. След получаване на първия пакет, B ще изпрати потвърждение, казвайки, че 500B е на разположение за прозореца, тъй като вторият пакет все още не е получен. Приема се, че 500B е размерът на прозореца и следователно изпраща два пакета от 250B. Докато при B се използва 500B и току-що е получено 500, той ще изпрати 0B, когато е наличен. В този момент A ще приеме, че няма наличен прозорец, въпреки че може да се случи буферът да е празен, тъй като процесорът е използвал данните там. A пак ще изпрати по-малък пакет, за да види дали има наличен прозорец. Ако съдържанието на буфера в B все още не е премахнато, той пак ще получи 0 като отговор / потвърждение.

По този начин размерът на прозореца продължава да намалява, тъй като B изпраща потвърждение всеки път, когато получава пакет от A. Този размер обикновено е по-малък от предишното потвърждение, тъй като B получава пакети данни на части. Няма да има проблем, ако A може да изпрати пакет, достатъчно голям, за да покрие размера на буфера на B наведнъж. Но това ще изисква допълнителни механизми и следователно Синдром на глупавите прозорци. Комуникацията спира, след като A получи 0 два или три пъти.

Как да предотвратим синдрома на глупав прозорец (SWS)

Има прост алгоритъм, който трябва да се приложи, за да се отървете от SWS. При получаване на първоначален пакет, B изпраща половината от наистина наличното пространство като прозорец. Това ще накара A да изпраща по-малки пакети. Следователно, когато пакетите станат твърде малки, тогава B изпраща общия размер на буфера, така че A може да започне да изпраща отново по-големи байтове данни.

С други думи, ако е наличен 1000B, B изпраща 500B като потвърждение. Съответно, A изпраща 250B x ​​2 пакета. За това A получава 100B като потвърждение. Когато получи 50B пакет, B изпраща 1000B - 50B към A. Това прави целия разговор отново оперативен. Това може да предизвика малко забавяне на обработката, но ще попречи на появата на Синдром на глупавия прозорец и ще спре целия разговор.

В обобщение, SWS се основава на размера на буфера на разположение на получателя и на приетия размер, изчислен от подателя. За да се предотврати SWS, се въвежда закъснение и умишлено по-малкият размер на прозореца се реципира, докато размерът на пакета стане твърде малък. След това получателят разкрива действително наличния размер на прозореца. Целият процес продължава да се повтаря, докато комуникацията не завърши.

Въпреки че може би съм използвал думите прозорец и буфер взаимозаменяемо. Нямам предвид никаква разлика между тях. В SWS проучванията буферът е прозорецът.

Ако се нуждаете от повече информация, тук има подробно обяснение на tcpipguide.com.

Урок за OpenTTD
OpenTTD е една от най-популярните бизнес симулационни игри там. В тази игра трябва да създадете прекрасен транспортен бизнес. Въпреки това, ще започне...
SuperTuxKart за Linux
SuperTuxKart е страхотно заглавие, създадено да ви предостави безплатно изживяването на Mario Kart във вашата Linux система. Играта е доста предизвика...
Урок за битка за Уеснот
Битката за Уеснот е една от най-популярните стратегически игри с отворен код, които можете да играете по това време. Тази игра не само се разработва о...