I dati vengono trasferiti tramite la rete e Internet utilizzando il Protocollo TCP / IP. Il TCP / IP non è perfetto ma è più facile da implementare rispetto ad altri protocolli teorizzati per la comunicazione dei dati … come il modello ISO OSI. Come ogni altra cosa tecnica, TCP / IP ha anche alcuni difetti e Silly Window Syndrome è una creazione di uno di quei difetti. Per capire cos'è Silly Window Syndrome o SWS, dovrai prima capire il meccanismo sottostante della comunicazione dei dati in TCP / IP.
Silly Window Syndrome
Capire la finestra e le sue dimensioni
Quando due punti comunicano sotto TCP / IP, implica un meccanismo di riconoscimento. Questo meccanismo di riconoscimento è ciò che causa la sindrome di Silly Window come spiegato ulteriormente. I punti possono fare riferimento a due computer, client e server ecc.
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.
Quando un computer, ad esempio A, invia un pacchetto di dati a un altro computer B, quest'ultimo deve riconoscere e rispondere che ha ricevuto il pacchetto di dati. Insieme al riconoscimento, deve anche inviare la dimensione del buffer impostato per quel thread di comunicazione. Questo è generalmente il numero di byte liberi per la comunicazione.
Quindi quando B dice che 100B è disponibile per il messaggio successivo, il 100B è la finestra in Silly Window Syndrome. Cioè, è la dimensione del buffer. Con il proprio difetto, il meccanismo TCP / IP può ridurre la dimensione del buffer per ogni comunicazione / dati provenienti da A. Cioè, ogni volta che A invia un messaggio, B assume che la dimensione del buffer sia ridotta e invia un numero più piccolo. In questo modo le dimensioni della finestra si riducono e in un punto la comunicazione si interrompe appena B invia 0B come dimensione della finestra.
Come funziona la sindrome della finestra sciocca
Secondo l'esempio precedente di A e B, se B invia 1000B come dimensione della finestra, A la dividerà in due 500B e invierà due pacchetti di 500B. Alla ricezione del primo pacchetto, B invierà una conferma dicendo che 500B è disponibile per la finestra poiché il secondo pacchetto deve ancora essere ricevuto. A presuppone che 500B sia la dimensione della finestra e che quindi invii due pacchetti di 250B. Mentre in B, 500B è usato e 500 è appena ricevuto, invierà 0B come disponibile. A questo punto, A non assumerà alcuna finestra disponibile sebbene possa accadere che il buffer sia vuoto mentre il processore usava i dati lì. A invierà comunque un pacchetto più piccolo per vedere se una finestra è disponibile. Se il contenuto del buffer in B non è ancora stato rimosso, riceverà comunque 0 come risposta / riconoscimento.
Pertanto, la dimensione della finestra continua a diminuire mentre B invia conferma ogni volta che riceve un pacchetto da A. Questa dimensione è solitamente inferiore alla precedente conferma poiché B sta ricevendo pacchetti di dati in parti. Non ci sarebbero problemi se A potesse inviare un pacchetto abbastanza grande da coprire la dimensione del buffer su B alla volta. Ma ciò richiederebbe meccanismi aggiuntivi e quindi Silly Window Syndrome. La comunicazione si interrompe dopo che A riceve 0 due o tre volte.
Come prevenire Silly Window Syndrome (SWS)
C'è un semplice algoritmo da implementare per sbarazzarsi di SWS. Dopo aver ricevuto il pacchetto iniziale, B invia metà dello spazio realmente disponibile come finestra. Ciò renderà A inviare pacchetti più piccoli. Di conseguenza, quando i pacchetti diventano troppo piccoli, B invia la dimensione del buffer totale in modo che A possa iniziare a inviare nuovamente byte di dati più grandi.
In altre parole, se 1000B è disponibile, B invia 500B come riconoscimento. Di conseguenza, A invia 250B x 2 pacchetti. Per questo, A riceve 100B come riconoscimento. Quando riceve un pacchetto da 50B, B invia 1000B - 50B a A. Ciò rende nuovamente operativa l'intera conversazione. Ciò potrebbe causare un leggero ritardo nell'elaborazione, ma impedirà la comparsa della Sindrome di Silly Window e interromperà l'intera conversazione.
Per riassumere, SWS si basa sulla dimensione del buffer disponibile sul destinatario e sulla dimensione presunta calcolata dal mittente. Per impedire SWS, viene introdotto un ritardo e si modifica reciprocamente una dimensione della finestra più piccola finché la dimensione del pacchetto non diventa troppo piccola. Quindi il destinatario rivela la dimensione della finestra effettivamente disponibile. L'intero processo continua a ripetersi fino a quando la comunicazione è completa.
Sebbene io possa aver usato le parole finestra e buffer in modo intercambiabile. Non intendo alcuna differenza tra loro. Negli studi SWS, il buffer è la finestra.
Se hai bisogno di ulteriori informazioni, c'è una spiegazione dettagliata disponibile qui su tcpipguide.com.