Шта је синдром глупог прозора - објашњење и превенција

Подаци(Data) се преносе преко мреже и Интернета(Internet) користећи TCP/IP Protocol . TCP/IP није савршен, али је лакши за имплементацију у поређењу са другим протоколима теоретизираним за комуникацију података... као што је ИСО ОСИ(ISO OSI) модел. Као и свака техничка ствар, TCP/IP такође има неке недостатке и Синдром глупог прозора(Silly Window Syndrome) је креација једне од тих мана. Да бисте разумели шта је синдром глупог прозора(Silly Window Syndrome) или СВС(SWS) , прво ћете морати да разумете основни механизам комуникације података у TCP/IP .

Синдром глупог прозора

синдром глупог прозора

Разумевање прозора и његове величине

Када две тачке комуницирају под TCP/IP , то укључује механизам потврде. Овај механизам потврде је оно што узрокује синдром глупог прозора,(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.

Када рачунар, рецимо А, пошаље пакет података другом рачунару Б, овај други мора да потврди и одговори да је примио пакет података. Заједно са потврдом, он такође мора да пошаље величину бафера одвојену за ту комуникациону нит. Ово је генерално број бајтова који су слободни за комуникацију.

Дакле, када Б каже да је 100Б доступно за следећу поруку, 100Б је прозор у синдрому глупог прозора(Silly Window Syndrome) . То јест, то је величина бафера. Са сопственом маном, TCP/IP механизам може смањити величину бафера за сваку комуникацију/податке који долазе од А. То јест, кад год А пошаље поруку, Б претпоставља да је величина бафера смањена и шаље мањи број. Тако се величина прозора смањује и у једном тренутку комуникација једноставно престаје док Б шаље 0Б као величину прозора.

Како функционише синдром глупог прозора

Према горњем примеру А и Б, ако Б пошаље 1000Б као величину прозора, А ће га поделити на два 500Б и послати два пакета од 500Б. По пријему првог пакета, Б ће послати потврду говорећи да је 500Б доступно за прозор јер други пакет тек треба да буде примљен. А претпоставља да је 500Б величина прозора и сходно томе шаље два пакета од 250Б. Док се код Б користи 500Б, а 500 је управо примљено, послаће 0Б као доступно. У овом тренутку, А ће претпоставити да прозор није доступан иако се може десити да је бафер празан јер је процесор потрошио податке тамо. А ће и даље послати мањи пакет да види да ли је неки прозор доступан. Ако садржај бафера на Б још није уклоњен, он ће и даље добити 0 као одговор/потврду.

Дакле, величина прозора наставља да се смањује како Б шаље потврду сваки пут када прими пакет од А. Ова величина је обично мања од претходне потврде пошто Б прима пакете података у деловима. Не би било проблема када би А могао да пошаље пакет довољно велик да покрије величину бафера на Б истовремено. Али да би то захтевало додатне механизме и отуда синдром глупог прозора(Silly Window Syndrome) . Комуникација се зауставља након што А прими 0 два или три пута.

Како спречити синдром глупог прозора(Silly Window Syndrome) ( СВС(SWS) )

Постоји једноставан алгоритам који треба применити да бисте се решили СВС(SWS) -а . Након што прими почетни пакет, Б шаље половину стварно доступног простора као прозор. То ће натерати А да шаље мање пакете. Сходно томе, када пакети постану сувише мањи, Б шаље укупну величину бафера тако да А може поново да почне да шаље веће бајтове података.

Другим речима, ако је 1000Б доступно, Б шаље 500Б као потврду. Сходно томе, А шаље 250Б к 2 пакета. За ово, А прима 100Б као потврду. Када прими пакет од 50Б, Б шаље 1000Б – 50Б ка А. То чини цео разговор поново оперативним. Ово може изазвати мало кашњење у обради, али ће спречити појаву синдрома глупог прозора(Silly Window Syndrome) и заустављање целог разговора.

Да сумирамо, СВС(SWS) се заснива на величини бафера доступној примаоцу и претпостављеној величини коју је израчунао пошиљалац. Да би се спречио СВС(SWS) , уводи се кашњење и намерно мања величина прозора се узвраћа све док величина пакета не постане премала. Тада прималац открива стварно доступну величину прозора. Цео процес се понавља док се комуникација не заврши.

Иако сам можда користио речи прозор и бафер наизменично. Не мислим на никакву разлику између њих. У СВС(SWS) студијама, бафер је прозор.



About the author

Ја сам компјутерски програмер и радим више од 15 година. Моје вештине леже у развоју и одржавању софтверских апликација, као и у пружању техничке подршке за те апликације. Такође сам предавао рачунарско програмирање средњошколцима, а тренутно сам професионални инструктор.



Related posts