Quiero aprender más sobre la forma de compartir archivos bittorrent. Soy un usuario técnicamente avanzado (programador), por lo que el material técnicamente avanzado no es un problema, pero debe ser conciso y al grano. Necesito un buen libro de recursos / web que explique la arquitectura general de bittorrent.
No me interesan los detalles, solo la arquitectura general y la terminología como semillas, pares, etc.
¿Alguna sugerencia?
fuente
Buen documento sobre el tema aquí
http://davidhales.name/posters/patarin-hales-delis-poster6.pdf (Nota es en realidad un
.pdf
archivo y se puede ver con Acrobat Reader).Aquí hay un archivo de imagen que alguien hizo de su contenido:
fuente
Hay un video bastante agradable en YouTube que explica esto de una manera visual con recortes de cartón. No es una explicación altamente técnica, pero es excelente para explicar la idea detrás de BitTorrent a las personas de una manera simple y comprensible.
fuente
Una descripción general del protocolo de mensajes de pares .
El cliente puede usar dos protocolos para compartir información con sus pares, TCP o uTP (a través de UDP). Estos datos siguen la especificación del protocolo bittorrent , sección mensajes par .
Entonces, programáticamente, debe comenzar una conexión entre dos clientes. Después de que se establece la conexión (a través de TCP o uTP), el cliente inicia un protocolo de enlace de bittorrent que toma la información remota de pares (ip y puerto) del rastreador o DHT . Este apretón de manos contiene el info_hash que identifica el torrente del que se tratará esta conexión.
Veamos primero cómo se truncan los datos de Torrent a través del protocolo. Una pieza es parte de los datos que comparte a través de la red. No debe confundirse con un bloque , que es una sección de una pieza envuelta en un paquete. El bloque es la granularidad para compartir una pieza a través de paquetes, y una pieza es la granularidad para compartir un Torrent a través de pares.
Cuando se inicia la conexión, ambos clientes (cliente local, que llamaré LC y cliente remoto, RC ) están bloqueados y sin interés . Ahogado significa "No responderé ninguno de sus mensajes, demasiado ocupado, pero podría tenerlos en cuenta". Desbloqueado, por lo tanto, significa "Contestaré sus mensajes". Interesado significa, por supuesto, que me gustaría algunas piezas que tengas. Por lo tanto, el estado de una conexión entre dos pares podría definirse con esos cuatro estados: LC_chocked ?, LC_interested ?, RC_chocked ?, RC_interested? Para advertir a RC que estoy (no) bloqueado o (no) interesado, Tengo que enviarle mensajes (no) interesados y (no) bloqueados , y recíprocamente.
Para informarse mutuamente qué piezas tienen, pueden enviar un mensaje de campo de bits justo después del apretón de manos. Como su nombre lo indica, es una cadena de bits donde cada bit se establece
1
si el cliente tiene esta pieza peculiar , de lo0
contrario.Entonces, si LC está bloqueado e interesado y RC lo ha desbloqueado , entonces puede enviar mensajes de solicitud para solicitar un bloque perteneciente a una pieza que sabe que LC tiene gracias al mensaje de campo de bits .
Cuando un par ha recibido la pieza completa , puede enviar un mensaje de pieza para informar a todos sus pares remotos para que actualicen el campo de bits asociado que están sosteniendo.
Esa es una descripción muy básica y, por supuesto, no se proporcionan todos los detalles aquí, como el algoritmo de asfixia, etc. no tiene más de dos enlaces dentro de una publicación).
fuente