O que é síndrome da janela boba - explicação e prevenção

Os dados(Data) são transferidos pela rede e pela Internet usando o TCP/IP Protocol . O TCP/IP não é perfeito, mas é mais fácil de implementar em comparação com outros protocolos teorizados para comunicação de dados… como o modelo ISO OSI(ISO OSI) . Como acontece com qualquer coisa técnica, TCP/IP também tem algumas falhas e a Síndrome da Janela Silvestre(Silly Window Syndrome) é uma criação de uma dessas falhas. Para entender o que é Síndrome da Janela Silenciosa(Silly Window Syndrome) ou SWS , primeiro você precisa entender o mecanismo subjacente da comunicação de dados no TCP/IP .

Síndrome da janela boba

síndrome da janela boba

Entendendo a janela e seu tamanho

Quando dois pontos estão se comunicando em TCP/IP , isso envolve um mecanismo de reconhecimento. Esse mecanismo de reconhecimento é o que causa a síndrome da janela boba(Silly Window Syndrome) , conforme explicado mais adiante. Os pontos podem referir-se a dois computadores, cliente e servidor, 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.

Quando um computador, digamos A, envia um pacote de dados para outro computador B, este último tem que reconhecer e responder que recebeu o pacote de dados. Junto com o reconhecimento, ele também deve enviar o tamanho do buffer separado para esse segmento de comunicação. Este é geralmente o número de bytes liberados para comunicação.

Então, quando B diz que 100B está disponível para a próxima mensagem, o 100B é a janela na Síndrome da Janela Boba(Silly Window Syndrome) . Ou seja, é o tamanho do buffer. Com sua própria falha, o mecanismo TCP/IP pode reduzir o tamanho do buffer para cada comunicação/dados vindos de A. Ou seja, sempre que A envia uma mensagem, B assume que o tamanho do buffer é reduzido e envia um número menor. Assim, o tamanho da janela continua reduzido e em um ponto, a comunicação apenas para quando B envia 0B como o tamanho da janela.

Como funciona a síndrome da janela boba

De acordo com o exemplo acima de A e B, se B enviar 1000B como tamanho de janela, A o dividirá em dois 500B e enviará dois pacotes de 500B. Ao receber o primeiro pacote, B enviará uma confirmação dizendo que 500B está disponível para a janela, pois o segundo pacote ainda não foi recebido. A assume que 500B é o tamanho da janela e envia dois pacotes de 250B consequentemente. Enquanto em B, 500B é usado e 500 é apenas recebido, ele enviará 0B conforme disponível. Neste ponto, A assumirá que nenhuma janela está disponível, embora possa acontecer que o buffer esteja vazio, pois o processador usou os dados lá. A ainda enviará um pacote menor para ver se alguma janela está disponível. Se o conteúdo do buffer em B ainda não for removido, ele ainda receberá 0 como resposta/confirmação.

Assim, o tamanho da janela continua reduzindo à medida que B envia uma confirmação toda vez que recebe um pacote de A. Esse tamanho geralmente é menor do que a confirmação anterior, pois B está recebendo pacotes de dados em partes. Não haveria problema se A pudesse enviar um pacote grande o suficiente para cobrir o tamanho do buffer em B de cada vez. Mas isso exigiria mecanismos adicionais e, portanto, a Síndrome da Janela Silly(Silly Window Syndrome) . A comunicação pára depois que A recebe 0 duas ou três vezes.

Como prevenir a síndrome da janela boba(Silly Window Syndrome) ( SWS )

Existe um algoritmo simples a ser implementado para se livrar do SWS . Ao receber o pacote inicial, B envia metade do espaço realmente disponível como janela. Isso fará com que A envie pacotes menores. Conseqüentemente, quando os pacotes se tornam muito menores, então B envia o tamanho total do buffer para que A possa começar a enviar bytes de dados maiores novamente.

Em outras palavras, se 1000B estiver disponível, B enviará 500B como confirmação. Assim, A envia 250B x ​​2 pacotes. Para isso, A recebe 100B como reconhecimento. Quando recebe um pacote de 50B, B envia 1000B – 50B para A. Isso torna toda a conversação operacional novamente. Isso pode induzir um pequeno atraso no processamento, mas impedirá que a Síndrome(Silly Window Syndrome) da Janela Silenciosa ocorra e interrompa toda a conversa.

Resumindo, o SWS é baseado no tamanho do buffer disponível para o destinatário e no tamanho presumido calculado pelo remetente. Para evitar SWS , um atraso é introduzido e um tamanho de janela menor deliberado é retribuído até que o tamanho do pacote se torne muito pequeno. Em seguida, o destinatário divulga o tamanho da janela realmente disponível. Todo o processo continua se repetindo até que a comunicação seja concluída.

Embora eu possa ter usado as palavras janela e buffer de forma intercambiável. Não quero dizer nenhuma diferença entre eles. Nos estudos SWS , o buffer é a janela.



About the author

Eu sou um desenvolvedor iOS qualificado com mais de doze anos de experiência. Trabalhei nas plataformas iPhone e iPad e sei como criar e personalizar aplicativos usando as tecnologias mais recentes da Apple. Além de minhas habilidades como desenvolvedor aiOS, também tenho forte experiência no uso do Adobe Photoshop e Illustrator, bem como desenvolvimento web através de frameworks como WordPress e Laravel.



Related posts