Noções básicas de rede
11. Tarefa da camada de transporte
11.3. Janela TCP
A fiabilidade da entrega de dados dentro de uma sessão TCP depende do envio pelo cliente de um aviso de receção de dados previamente enviados. Antes de o servidor poder enviar outra porção de dados ao cliente, deve receber este aviso de receção. Isto por vezes causa atrasos na entrega de segmentos, uma vez que estes não são enviados continuamente. Contudo, estes problemas são aceitáveis quando a fiabilidade da comunicação é exigida.
Assumindo que 1000 bytes de dados serão enviados num segmento com número de sequência 1, quando o cliente recebe 1 parte dos dados, enviará um segmento com número de confirmação 1001 para o servidor. O próximo byte, começando com o byte 1001. Quando o servidor enviar mais 1000 bytes, o número de confirmação recebido será 2001, o próximo número será 3001, o próximo 4001 e assim por diante.
Claro que, na realidade, quando o anfitrião tem de confirmar a receção de uma quantidade tão pequena de dados de cada vez, isto pode causar uma grande sobrecarga de largura de banda, por exemplo, o tempo de carregamento da página pode ser longo. Por conseguinte, mais dados são enviados e reconhecidos pelo feedback. A quantidade de dados que o servidor pode enviar antes de receber uma confirmação do cliente é chamada o tamanho da janela, neste caso 3000 bytes.
Este tamanho é especificado no cabeçalho do segmento TCP e, para além de determinar a quantidade de dados que podem ser transmitidos sem reconhecimento, permite o controlo do fluxo de dados entre dispositivos. Se um cliente encontrar um bloqueio durante a receção de dados e um segmento for perdido, o dispositivo pode enviar informação ao servidor para reduzir o tamanho desta janela, a quantidade de dados que pode ser recebida sem aviso de receção, retardando a transferência, mas evitando a perda de um segmento. Passado algum tempo, o tamanho da janela volta ao seu tamanho original. A mudança no tamanho da janela durante a transferência é chamada janela dinâmica ou janela deslizante.