Resumo

  • A RFC 6298 reinicia o temporizador quando um ACK reconhece dados novos, e não simplesmente quando qualquer ACK chega.
  • O temporizador começa quando dados são enviados, para quando tudo pendente é reconhecido e, ao expirar, retransmite o segmento não reconhecido mais antigo.

A fronteira reconhecida define o prazo

O temporizador protege os dados que continuam pendentes. Ao enviar um pacote com dados, o remetente inicia o temporizador pelo RTO atual se ele estiver parado. Enviar mais dados enquanto ele já está ativo não cria automaticamente um novo prazo.

A regra 5.3 exige a confirmação de dados novos para reiniciar o relógio. O receptor confirmou uma parte adicional da sequência; assim, o primeiro segmento ainda pendente pode ter mudado, e o temporizador é reiniciado para o novo estado com o intervalo RTO vigente.

Um ACK que apenas repete a fronteira anterior não satisfaz essa condição. A inferência é que ACKs duplicados não conseguem empurrar continuamente o prazo dos dados não resolvidos. Isso não quer dizer que sejam inúteis em todo o TCP.

Quando todos os dados pendentes são reconhecidos, o temporizador é desligado. Se ele expirar, o remetente retransmite o segmento mais antigo que ainda não foi reconhecido.

O limite normativo

A RFC 6298 exige que um segmento nunca seja retransmitido menos de um RTO após sua transmissão anterior. O ciclo de iniciar, desligar e reiniciar aparece como algoritmo recomendado de gerenciamento. A exigência obrigatória e a forma recomendada de implementá-la devem permanecer separadas.

A fonte não permite afirmar como todos os stacks atuais funcionam. Também não trata aqui de ACKs atrasados, amostras de RTT, retransmissão rápida, SACK, controle de congestionamento ou aumento após expiração.

Fontes