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.