Enviando dados grandes sobre TCP e indicadores de progresso

2

Entendo que quando você abre uma conexão tcp para enviar dados, a camada tcp na extremidade receptora mantém-se em todos os pacotes até que a transmissão esteja completa, então envia todos os dados para o aplicativo.

Da wikipedia no tcp:

Due to network congestion, traffic load balancing, or other unpredictable network behavior, IP packets can be lost, duplicated, or delivered out of order. TCP detects these problems, requests retransmission of lost data, rearranges out-of-order data, and even helps minimize network congestion to reduce the occurrence of the other problems. Once the TCP receiver has reassembled the sequence of octets originally transmitted, it passes them to the receiving application. Thus, TCP abstracts the application's communication from the underlying networking details.

Mas, quando você faz o download de um arquivo grande, o navegador acompanha, sabe quantos dados foram enviados, sabe quão rápido está sendo transmitido, etc. Como ele sabe tudo isso se a transferência não foi concluída? e, portanto, não foi passado para o aplicativo de recebimento?

O que estou perdendo aqui?

    
por Shane 03.12.2014 / 00:05

1 resposta

1

O que está faltando é que isso não exige que todos os dados sejam recebidos antes de transmiti-los ao aplicativo de recebimento. Ele simplesmente exige que tenha remontado a sequência dos dados até o momento.

Em outras palavras, se estiver faltando um segmento ou um segmento está corrompido, ele solicitará uma retransmissão desse segmento e aguardará para recebê-lo antes de passar adiante os dados.

Em termos simples, imagine se meu computador solicitou dados que chegariam em 10 segmentos. Recebe segmentos da seguinte forma: 1, 2, 3, 5, 6, 7, 4, 8, 10.

Como ele recebe os segmentos, ele pode passar 1-3 diretamente para o aplicativo. Como 4 está fora de ordem, ele deve esperar passar 5-7 até que também receba 4. Pode então passar 8, mas ele não recebe 9 (ou está corrompido), então deve esperar para passar 10 até pode solicitar a retransmissão do segmento 9 e recebê-lo também.

    
por 03.12.2014 / 01:06

Tags