Varie

Che cos'è la sindrome della finestra stupida - Spiegazione e prevenzione

Che cos'è la sindrome della finestra stupida - Spiegazione e prevenzione

I dati vengono trasferiti sulla rete e su Internet utilizzando il Protocollo TCP/IP. Il TCP/IP non è perfetto ma è più facile da implementare rispetto ad altri protocolli teorizzati per la comunicazione dati… come il modello ISO OSI. Come con qualsiasi cosa tecnica, anche TCP/IP ha alcuni difetti e Sindrome della finestra stupida è una creazione di uno di quei difetti. Per capire cos'è la Silly Window Syndrome o SWS, devi prima capire il meccanismo sottostante alla comunicazione dei dati in TCP/IP.

Sindrome della finestra stupida

Comprendere 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 della finestra stupida come spiegato ulteriormente. I punti possono riferirsi a due computer, client e server, ecc.

SWS è causato dal destinatario che fa avanzare il bordo destro della finestra ogni volta che ha nuovo spazio nel buffer disponibile per ricevere dati e dal mittente che utilizza qualsiasi finestra incrementale, non importa quanto piccola, per inviare più dati. Il risultato può essere un modello stabile di invio di piccoli segmenti di dati, anche se sia il mittente che il destinatario hanno un ampio spazio di buffer totale per la connessione, afferma MSDN.

Quando un computer, diciamo A, invia un pacchetto di dati a un altro computer B, quest'ultimo deve riconoscere e rispondere di aver ricevuto il pacchetto di dati. Insieme al riconoscimento, deve anche inviare la dimensione del buffer impostata 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 nella sindrome di Silly Window. Cioè, è la dimensione del buffer. Con un 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. Quindi la dimensione della finestra continua a ridursi e ad un certo punto la comunicazione si interrompe quando B invia 0B come dimensione della finestra.

Come funziona la sindrome della finestra stupida?

Secondo l'esempio sopra di A e B, se B invia 1000B come dimensione della finestra, A lo 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 di conseguenza invii due pacchetti da 250B. Mentre in B, viene utilizzato 500B e 500 è appena stato ricevuto, invierà 0B come disponibile. A questo punto, A supporrà che non sia disponibile alcuna finestra anche se potrebbe accadere che il buffer sia vuoto poiché il processore ha esaurito i dati lì. A invierà comunque un pacchetto più piccolo per vedere se è disponibile una finestra. Se il contenuto del buffer in B non è ancora stato rimosso, riceverà comunque 0 come risposta/riconoscimento.

Pertanto, la dimensione della finestra continua a ridursi poiché B invia una conferma ogni volta che riceve un pacchetto da A. Questa dimensione è solitamente inferiore rispetto al riconoscimento precedente 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 questo richiederebbe meccanismi aggiuntivi e quindi la sindrome della finestra stupida. La comunicazione si interrompe dopo che A riceve due o tre volte 0.

Come prevenire la sindrome della finestra stupida (SWS)

C'è un semplice algoritmo da implementare per sbarazzarsi di SWS. Alla ricezione del pacchetto iniziale, B invia metà dello spazio realmente disponibile come finestra. Ciò farà sì che A invii pacchetti più piccoli. Di conseguenza, quando i pacchetti diventano troppo piccoli, B invia la dimensione totale del buffer in modo che A possa ricominciare a inviare 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 ad A. Ciò rende di nuovo operativa l'intera conversazione. Ciò potrebbe indurre un piccolo ritardo nell'elaborazione, ma impedirà il verificarsi della sindrome della finestra stupida e l'interruzione dell'intera conversazione.

Per riassumere, SWS si basa sulla dimensione del buffer disponibile sul destinatario e sulla dimensione presunta calcolata dal mittente. Per prevenire SWS, viene introdotto un ritardo e viene scambiata una dimensione della finestra deliberatamente più piccola finché la dimensione del pacchetto diventa troppo piccola. Quindi il destinatario rivela la dimensione della finestra effettivamente disponibile. L'intero processo continua a ripetersi fino al completamento della comunicazione.

Anche se potrei 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 maggiori informazioni, c'è una spiegazione dettagliata disponibile qui su tcpipguide.come.

Come utilizzare GameConqueror Cheat Engine in Linux
L'articolo copre una guida sull'utilizzo del motore cheat GameConqueror in Linux. Molti utenti che giocano su Windows utilizzano spesso l'applicazione...
I migliori emulatori di console di gioco per Linux
Questo articolo elencherà il popolare software di emulazione della console di gioco disponibile per Linux. L'emulazione è un livello di compatibilità ...
Le migliori distribuzioni Linux per il gioco nel 2021
Il sistema operativo Linux ha fatto molta strada dal suo aspetto originale, semplice e basato su server. Questo sistema operativo è notevolmente migli...