retransmissão do segmento TCP perdido

1

O que acontecerá no cenário a seguir (suponha que a conexão já esteja estabelecida):

  1. (pilha A) envia dados de 10 bytes

  2. (pilha B) envia o ACK para dados de 10 bytes

  3. (pilha B) enviar dados de 200 bytes

  4. (pilha B) envia dados de 100 bytes

  5. (pilha B) envia dados de 50 bytes

  6. (pilha A) envia o ACK para dados de 350 bytes e também envia dados de 70 bytes
    Este segmento se perde e não alcança a máquina B.

  7. (pilha B) retransmite dados de 200 bytes (etapa 3)

  8. (pilha A) envia o ACK para dados de 200 bytes e o próximo número de seq esperado como aquele para dados de 70 bytes

Pergunta: Os dados de 70 bytes também devem ser transferidos com o ACK na etapa 8? Observe que o timer de retransmissão da etapa 6 ainda não expirou.

    
por Der Hochstapler 27.02.2010 / 13:37

1 resposta

2

Não, os 70 bytes não devem ser incluídos com o ACK imediato para chegada de segmento fora de ordem.

Por quê? O passo 7 é a chegada de um segmento fora de ordem. O TCP deve gerar um ACK imediato fornecendo o próximo byte esperado (que será 361 + o que foi enviado antes do Passo 1) ao receber um segmento fora de ordem. Mas o TCP não retransmite o segmento contendo os 70 bytes de dados com o ACK com piggyback. Esse segmento ainda está na fila de retransmissão, esperando que o cronômetro expire ou, se a retransmissão rápida estiver habilitada, três ACKs duplicados chegam, mas nenhum deles aconteceu ainda. A chegada fora de ordem é uma indicação de congestionamento, portanto, faz sentido que o TCP envie o menor ACK possível.

    
por 14.03.2010 / 15:22