O upload funciona da seguinte maneira, independentemente da técnica usada.
Primeiro você tem um cliente e um servidor. O servidor apenas escuta qualquer sinal recebido.
O cliente se conecta ao servidor dizendo: "oi, eu quero usar você". O servidor responde: "claro, vá em frente e inicie uma conexão com essa porta" (o cliente agora se torna a parte do remetente, em vez do trabalho inicial do servidor).
O cliente inicia um comando informando ao servidor que ele deseja fazer upload de qualquer coisa, digamos ... um arquivo.
O servidor aceita e se prepara para receber o arquivo.
O cliente agora começa a enviar o arquivo como o TCP / IP faria: enviando 1 pacote esperando que o servidor responda que o recebeu, enviando os próximos 2, aguardando a resposta, etc. Este processo é continuou até que o arquivo tenha sido transmitido. Esse estágio é visto como um upload da perspectiva do cliente e baixado da perspectiva do servidor.
Em um torrent, funciona da mesma maneira. Você primeiro faz o download do arquivo de diferentes clientes que enviam seus dados para você, então você começa a enviar para outros clientes e eles fazem o download de você.
Um servidor em um torrent é uma máquina que controla quem tem quais partes do arquivo e de onde alguém pode fazer o download. Em vez de dizer ao cliente, você pode fazer o download de mim, ele diz, você pode fazer o download do cliente x, da mesma forma que ele irá encaminhar outros clientes para o seu cliente.
Observe que, com um torrent, você não inicia o upload quando o download é concluído, mas sim quando você tem algo a oferecer. Digamos que você baixou 10kb de um arquivo de 1mb, então outra pessoa já pode baixar os 10kb de você.