Acho que você está entendendo mal o funcionamento do TCP.
Cada pacote enviado sempre anunciará uma janela do receptor (aka. RWIN) e um fator de escala opcional, veja RFC 1323
O remetente não tem permissão para enviar mais que a quantidade de dados especificada no RWIN sem que ele seja reconhecido. Dependendo da janela de congestionamento, o remetente pode decidir encher o RWIN ou não.
Portanto, existem dois bits de informação que são públicos nos pacotes TCP. O RWIN no servidor e o RWIN no cliente. Ambas as figuras ditam que o tamanho máximo da janela de congestionamento pode estar em ambas as extremidades.
O RWIN no servidor é interessante quando estamos tentando otimizar o desempenho para os uploads de arquivos.
O RWIN no cliente é interessante quando estamos tentando determinar a velocidade de download.
Nenhum desses números torna a janela de congestionamento na outra extremidade pública .
SO se eu tiver um RWIN de 64k, a janela de congestionamento no servidor pode ser QUALQUER número menor que 64k.
A única maneira de determinar qual é a janela de congestionamento real é contar os pacotes.
Se eu souber:
- Meu tempo de ida e volta (RTT) é de ~ 200 ms.
- Acabei de solicitar um recurso de 100k.
- Eu tenho um RWIN de 64k.
Se eu obtiver 2 pacotes de volta do servidor que tem 1452 bytes em ~ 200ms, é provável que a janela de congestionamento no servidor seja menor que 4356, porque se fossem 3 pacotes maiores seriam enviados. Se o IW fosse definido como 10, eu veria uma sequência de 10 pacotes em torno da marca de 200 ms.
Se você alterar seu IW e quiser confirmar a alteração, será necessário contar os pacotes para obter uma estimativa do tamanho da janela de congestionamento no servidor.
Lembre-se, você provavelmente vai querer olhar para a conversa diretamente após o SYN, SYN-ACK, ACK para garantir que você não esteja olhando para o meio de uma conversa (onde a janela de congestionamento já poderia ter crescido).