Carregando
0x70Lição 8 de 14

Mantenha os dados fluindo com TCP

Experimente janelas deslizantes, retransmissão e controle de congestionamento.

25 min Questionário com 7 perguntas
Ao final desta lição, você saberá
  • Explicar por que uma janela deslizante é mais rápida do que esperar cada confirmação.
  • Descrever o que acontece com uma janela quando um segmento se perde.
  • Ler um gráfico da janela de congestionamento e nomear suas fases.

Se o TCP enviasse um segmento e esperasse a confirmação antes de enviar o próximo, um servidor a 100 ms de distância conseguiria enviar cerca de dez segmentos por segundo, por mais rápido que fosse o enlace. Isso daria cerca de 120 kilobits por segundo em uma conexão de um gigabit.

Por isso, o TCP mantém muitos segmentos em trânsito ao mesmo tempo. A pergunta difícil é quantos: poucos desperdiçam o enlace, e muitos o sobrecarregam.

A janela deslizante

A janela é a quantidade de dados não confirmados que quem envia pode ter em trânsito. Conforme as confirmações chegam, a janela desliza e libera dados novos. Se um segmento some, quem recebe guarda em um buffer o que chegou depois dele, mas não pode entregar isso à aplicação até a lacuna ser preenchida. Esse travamento se chama bloqueio de cabeça de fila (head-of-line blocking).

Experimente

Dispute com a janela

Faça a transferência uma vez com janela 1 e de novo com 4 e 8. O gráfico guarda seus resultados.

Depois tente perder um segmento: clique em um azul antes de enviar. O que acontece com os segmentos depois dele, e quantas idas e voltas a perda custa?

Tamanho da janela
  • Em trânsito nesta ida e volta
  • Recebido, aguardando uma lacuna
  • Entregue à aplicação
  • Será perdido
Idas e voltas
0
Segmentos enviados
0
Entregues em ordem
0/16

1 segmento está pronto para sair. Clique em um para perdê-lo no caminho.

Dois limites para a janela

Quem envia obedece ao menor de dois limites, que protegem coisas diferentes:

  • O controle de fluxo protege quem recebe, que anuncia quanto espaço de buffer ainda tem.
  • O controle de congestionamento protege a rede. Quem envia estima o que o caminho suporta, porque ninguém informa isso diretamente.

Essa estimativa é a janela de congestionamento. A abordagem do TCP é sondar por mais largura de banda até que uma perda mostre que passou do ponto, e então recuar.

Experimente

Desenhe o dente de serra

Experimente os três cenários e depois clique nas idas e voltas para colocar sua própria perda. Compare um D (ACKs duplicados: a rede está descartando alguns pacotes, mas ainda funciona) com um T (timeout: nada está passando). Passe o mouse sobre o gráfico para ler os valores exatos.

Qual custa mais, e por que o TCP reagiria de forma diferente a cada um?

  • Janela de congestionamento
  • Limiar de partida lenta
012,52537,55014710131619222528Ida e voltaSegmentos
Mostrar os números em uma tabela
Ida e voltaJanela de congestionamentoLimiar de partida lenta
1116
2216
3416
4816
51616
61716
71816
81916
92016
102116
112216
122316
131111
141211
151311
161411
171511
181611
191711
201811
211911
222011
232111
242211
252311
262411
272511
282611

Adicione perda a uma ida e volta

Clique em uma ida e volta para alternar entre D (ACKs duplicados), T (timeout) e sem perda.

Total de segmentos enviados
467
Janela final
26
Fase final
Prevenção de congestionamento

As fases têm nome. A partida lenta (slow start) dobra a janela a cada ida e volta, o que não tem nada de lento; o nome se refere a começar com uma janela pequena. Depois do limiar, a prevenção de congestionamento acrescenta apenas um segmento por ida e volta. Uma perda então corta a janela, e esse “aumento aditivo, redução multiplicativa” produz o dente de serra que você acabou de desenhar.

Experimente

Encontre a perda em uma captura real

Capturas de pacotes mostram tudo isso acontecendo. Clique na linha que responde a cada pergunta.

Rodada 1 de 3: Encontre o primeiro sinal de perdaPontuação 0/0

Um segmento sumiu. Qual linha mostra primeiro dados chegando depois de uma lacuna?

$ sudo tcpdump -n -S host 203.0.113.8

Principais conclusões

  • Uma janela mantém muitos segmentos em trânsito, então uma ida e volta entrega muito mais dados.

  • Um segmento perdido bloqueia a entrega em ordem até a retransmissão chegar.

  • O controle de fluxo protege quem recebe, e o controle de congestionamento protege a rede.

Quiz da aula

7 perguntas · aprovação com 5 acertos · até 50 XP

Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.

Dúvidas sobre esta lição

Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.

Carregando publicações…