Sobes.tech
Middle

O que sabe sobre a janela TCP?

sobes.tech IA

Resposta da IA

A janela TCP (ou janela de receção) é um mecanismo de controlo de fluxo no protocolo TCP. Ela define a quantidade de dados que um remetente pode enviar antes de receber uma confirmação (ACK) do destinatário. O tamanho da janela indica o espaço livre no buffer de receção do destinatário.

Objetivos do uso da janela TCP:

  • Prevenir a sobrecarga do buffer: O destinatário informa ao remetente o seu tamanho atual do buffer de receção, evitando o envio de mais dados do que pode processar.
  • Controlo de fluxo: A alteração dinâmica do tamanho da janela permite regular a velocidade de transmissão de dados consoante a carga da rede e o desempenho do destinatário.

Mecanismo de funcionamento:

  1. O destinatário envia ao remetente um segmento com informações sobre o tamanho da sua janela de receção (Tamanho da Janela).
  2. O remetente pode enviar dados cujo volume não exceda o tamanho indicado da janela.
  3. À medida que recebe dados, o destinatário reduz o tamanho da janela, refletindo a diminuição do espaço livre no buffer.
  4. O destinatário envia segmentos ACK que confirmam a receção de dados e contêm o tamanho atual da janela de receção.
  5. Ao receber o ACK, o remetente pode enviar a próxima porção de dados, baseada no tamanho atualizado da janela.

A alteração dinâmica do tamanho da janela permite otimizar a largura de banda e evitar perdas de pacotes por sobrecarga do buffer.

Exemplo:

O destinatário informa uma janela de 65535 bytes. O remetente pode enviar até 65535 bytes de dados. Após receber 10000 bytes, o destinatário envia um ACK indicando uma nova janela de 55535 bytes.

// Exemplo simples (não código real, apenas demonstração do princípio)
struct tcp_header {
    // ... outros campos
    uint16_t window_size; // Tamanho da janela de receção em bytes
    // ...
};