Cómo crear un cliente de BitTorrent en Go desde cero
(blog.jse.li)Explica paso a paso cómo crear un cliente basado en tracker (excluyendo DHT, magnet, etc.)
-
Parseo de archivos
.torrent -
Descubrimiento de peers
-
Parseo de respuestas del tracker
-
Intercambio de payload con peers (
concurrency,pipelining, etc.)
4 comentarios
Aunque uso torrents, tenía curiosidad por saber cómo se hacen. Gracias por la buena información.
Busqué para ver si hoy en día todavía hay usos de los torrents que no sean ilegales,
y el open source Murder, que Twitter usaba para desplegar servidores, ya no tiene mantenimiento.
https://github.com/lg/murder
Blizzard había usado el protocolo torrent para distribuir clientes grandes, pero eso también lo quitaron después de 2015.
https://us.battle.net/forums/en/bnet/topic/16283439122
Como mucho, quedaría el caso de Internet Archive, que lo usa para descargar archivos.
https://help.archive.org/hc/en-us/…
A veces también resulta útil para conseguir distribuciones minoritarias de sistemas operativos basados en Linux.
Bastantes sistemas operativos basados en Linux ofrecen la opción de descargarse vía torrent,
y eso sirve porque, si más adelante ya no se pueden descargar directamente por razones como la descontinuación del desarrollo de ese sistema,
todavía se pueden obtener de otros usuarios que ya los descargaron mediante torrent y siguen manteniendo el seeding.
Hay varios clientes completos y bibliotecas de BitTorrent hechos en Go, además de este.
https://github.com/cenkalti/rain
https://github.com/anacrolix/torrent