(Actualizado para reflejar los cambios en el tracker. 14-04-2004)
Parece existir una confusión generalizada acerca de cómo funciona la actualización de estadísticas. A continuación se muestra
la captura de una sesión completa de lo que sucede tras bambalinas. El cliente se comunica con el tracker a través de simples comandos GET de http. El primero de estos casos es:
GET /announce.php?info_hash=c%97%91%C5jG%951%BE%C7M%F9%BFa%03%F2%2C%ED%EE%0F& peer_id=S588-----gqQ8TqDeqaY&port=6882&uploaded=0&downloaded=0&left=753690875 &event=started
Vamos a desglosarlo:
• info_hash es la información de hash (partcionamiento)
de dicho torrent;
• peer_id, el nombre lo dice, identificación del cliente;
• port verifica en el tracker cuál es conveniente usar, es la
"vía de comunicación" del tracker con los
clientes;
• uploaded=0; (todo dicho..., subido y bajado)
• downloaded=0;
• left=753690875 (cuanto falta);
• event=started (le dice al tracker que el cliente ha comenzado).
La IP del cliente no aparece acá (a menos que lo configures). Es tarea
del tracker verla y asociarla con el user_id.
(Las respuestas del servidor serán omitidas, sólo son listas de las
ips, de los peers y sus puertos).
En este estado el perfil del usuario puede listar lo descargado y
subido.
>Desde ahora el cliente seguirá mandando lo recibido al tracker. Esto
es sólo un ejemplo,
GET /announce.php?info_hash=c%97%91%C5jG%951%BE%C7M%F9%BFa%03%F2%2C%ED%EE%0F& peer_id=S588-----gqQ8TqDeqaY&port=6882&uploaded=67960832&downloaded=40828928& left=715417851&numwant=0
("numwant" es lo que le dice el cliente al tracker, cuántos peers
nuevos encontró, en este caso 0.)
Podés ver en este caso que se subió aprox. 68MB y se descargó
aprox. 40MB. De todas formas el tracker recibe lo obtenido e informa
de cuántos leeching/seeding (sólo suben y los que bajan)' y el total
subido y bajado del usuario. Estas estadísticas se producen
automática y periódicamente(cada 15 min ó más,
dependiendo del cliente y del tracker) o si no haga el announce manual
en el cliente.
Finalmente, cuando el cliente se cierra envía:
GET /announce.php?info_hash=c%97%91%C5jG%951%BE%C7M%F9%BFa%03%F2%2C%ED%EE%0F& peer_id=S588-----gqQ8TqDeqaY&port=6882&uploaded=754384896&downloaded=754215163 &left=0&numwant=0&event=completed
Observá todos los "event=completed" relevantes. En esta etapa el torrent se eliminará del perfil del usuario.
Si por alguna razón (caída del tracker, pérdida de conexión, cliente erróneo, cuelgue...) este último GET no alcanza el tracker, el torrent todavía permanecerá vigente en el perfil de usuario hasta que se desconecte el tracker. Es menester indicar que este mensajesólo se enviará cuando se cierre el cliente de forma adecuada, y no cuando finalice la descarga (el tracker comenzará a tener en cuenta un torrent como "compartiendo" tras recibir el mensaje GET =0).
Existe otro mensaje más que ocasiona la eliminación del torrent del perfil de usuario, conocido como "event=stopped". Se suele enviar cuando se detiene una descarga por la mitad, por ejemplo, al presionar "Cancelar" en un cliente como Shad0w.
Última nota: Alguno clientes tienen la opción de pausa/resume.
Esto no envía ningún mensaje al servidor. Tratá
de no utilizar estas opciones ya que no funcionan bien y pueden generar
la pédida de su estadísticas. (Comprobá el Shad0w's 5.8.11
y el ABC 2.6.9.)