Pedimos disculpas porque en el título de este apartado os hemos engañado un poco ya que no vamos a explicar cómo es la descarga del BitTorrent sino que explicaremos la subida en dicho programa. En realidad, al contrario de lo que se podría pensar, no se puede controlar de quién se baja ni cuándo se baja. Sino, lo que realmente se controla es a quién se sube y cuándo se sube y es lo que vamos a explicar.
Cuando se descarga algo es porque algún usuario nos lo manda por voluntad propia. Todo esto se realiza de forma automática sin que tengamos que hacer nada. Es decir, de forma transparente al usuario.
Supongamos que tenemos configurado 4 conexiones máximas de subida, o lo que es lo mismo el número de conexiones que no estarán choked (una posible traducción podría ser que no estén bloqueados) o, dicho de otro modo, el número máximo de peers a los que subiremos datos simultáneamente.
De las 4 conexiones de subida disponibles, se explicará primero para qué se usan las 3 primeras. La cuarta conexión de subida la será explicada más adelante. Estas 3 conexiones son usadas para enviar al peer que más datos haya enviado en los últimos 10 segundos y esté interesado en las pieces que disponemos, como se puede ver en los 3 círculos en rojo de la imagen inferior.
A pesar de que el usuario con ip 1.1.1.5 nos manda datos a una velocidad mayor que el resto usuarios, no se le envía nada ya que como se puede ver en los círculos rojos de la imagen inferior contiene el 100% del archivo y no esta interesado en las pieces de las que disponemos porque se trata de un seed (semilla).
Para enviar datos a un peer se le quitará el estado de choking (bloqueado) y se comenzará a subirle datos.
La cuarta conexión de subida que quedaba por explicar, se utiliza a través del Optimistic Unchoke. Esto consiste en enviar datos durante 30 segundos a un usuario, luego 30 segundos a otro usuario y así sucesivamente. Probablemente en la práctica tardará unos 35 segundos ya que se suele tardar unos 5 segundos en realizar la conexión. El usuario que está siendo beneficiado por el Optimistic Unchoke se ve marcado con un asterísco. Esto se realiza por dos motivos:
1. Para que todos los usuarios tengan la posibilidad de conseguir una piece. Las descargas en el BitTorrent al principio van algo lentas porque sólo se puede descargar mediante el Optimistic Unchoke ofrecido por otros usuarios.
2. Para comprobar si hay otro usuario con el que se podría intercambiar datos a una velocidad mayor. Si se envía a una velocidad elevada lo más probable es que se supere a alguno de los peers con los que está intercambiando actualmente y por lo tanto, se pasará a ser uno de los peers con los que comenzará a intercambiar datos. Entonces se debe decidir si este nuevo peer con el que se están intercambiando datos es mejor que alguno de los otros 3 de los que se disponen.
En la siguiente imagen animada podemos ver cómo se realiza este proceso pero se ha reducido el tiempo de 35 a 5 segundos para facilitar su visión.
Hay que tener en cuenta que el Optimistic Unchoke se realiza con los usuarios que estén conectados excepto a los que ya se les está subiendo algo (no vamos a subir dos veces al mismo usuario) y que estén Interested (interesados) en las pieces que se disponen. Los seeds con el 100% del archivo no están interesados o, el que está a punto de terminar una descarga (como vemos el usuario de la ip 1.1.1.1 en la imagen superior que ya dispone de todas nuestras pieces).
Ahora que se sabe cómo funciona la gestión de las descargas, mejor dicho la gestión de subidas, vamos a responder las preguntas más típicas que se realizan.