Janela = Controle de Fluxo Dinâmico no TCP
Na Camada de Transporte (OSI Camada 4), janela (windowing) é o mecanismo que permite ao receptor dizer ao remetente "quantos dados a mais posso aceitar agora" — prevenindo overflow de buffer e otimizando vazão.
Conceitos Centrais
- Tamanho da Janela (rwnd): Campo de 16 bits no cabeçalho TCP (0–65.535 bytes). Escalado via opção Window Scale (WS) até 1 GB (RFC 7323).
- Janela de Envio: Bytes que remetente pode transmitir sem ACK = min(cwnd, rwnd).
- Números de Sequência: Cada byte numerado; ACK = próximo byte esperado.
Operação da Janela Deslizante
- Remetente transmite até tamanho da janela.
- Receptor processa, envia ACK com
rwnd atualizado. - Janela "desliza" para frente — novos bytes ficam elegíveis.
- Se
rwnd = 0, remetente para (persiste zero-window probe).
Aprimoramentos-Chave
- ACK Atrasado: Receptor espera até 200 ms ou 2 segmentos → reduz overhead de ACK.
- ACK Seletivo (SACK): Reporta blocos não contíguos recebidos → retransmissão rápida só do faltante.
- Janela Adaptativa:
rwnd encolhe/cresce com pressão de buffer; cwnd (janela de congestionamento) reage a perda/ECN.
Por Que Importa
- Sem janela: stop-and-wait → 1 RTT por segmento → vazão terrível em links alto-BDP (satélite, fibra longa).
- Com janela: utilização total do tubo — remetente mantém dados "em voo" = Largura de Banda × RTT.
Analogia
Brigada de baldes: tamanho do balde do receptor = janela. Remetente despeja até balde cheio; receptor esvazia (processa) e sinaliza "mais espaço". Sem derramamento, sem mãos ociosas.
Janela é por que link 1 Gbps sobre 100 ms RTT entrega ~1 Gbps — não 14,6 kbps (stop-and-wait).