Charla sobre el protocolo BitTorrent, para saber como funciona, y como podemos extender este protocolo de file sharing descentralizado y distribuido. Con pequeño proyecto donde se extiende el protocolo agregandole una función de chat.
3. 3ABOUT:THIS
Objetivos:
● Entender el funcionamiento a nivel
protocolo (bajo nivel)
● Aprender las distintas partes
● Extender el protocolo agregando
funcionalidad
6. 6ABOUT:BitTorrent
Bueno para:
● Descara de archivos
de gran tamaño.
● Subir información
dificil de rastrear
la fuente
Malo para:
● Archivos de poco
tamaño.
● Mucha cantidad de
archivos activos.
7. E n[n|x]tendiendo el |x]tendiendo el x tendiendo el]tendiendo el
protocolo BitTorrent
9. 9About:Torrent
Metadata
Información sobre el torrent y
archivos
Bitfield
Bitfiel donde cada bit
simboliza una pieza
Chunk Store
Almacenamiento basado en chunks
de tamaño fijo.
Hash list
Lista de hashes SHA1 de cada
chunk.
13. 13Swarm de descarga
Peer: Cada nodo en
la red es un peer,
entre estos formas
swarms (enjambres).
Announce: Los peers
utilizan un tracker
para anunciarse, el
protocolo hace el
resto
15. 15Torrent Tracker
Los trackers son urls
HTTP que se encargan de
ofrecer información
sobre los peers,
agrupados por torrents.
Ex:
http://torrent.nwps.ws/announce
19. 19Peers
Un peer es un nodo interesado o
poseedor de un torrent concreto,
este es identificado por un PeerID.
Tipos:
● Leecher
● Seeder
20. 20Peers no altruistas
FreeRiders
Muchas veces
nombrados leecher
por error. Son
peers que
descargan sin
compartir.
Hit&Run
Nodos que apenas
terminan de bajar
un torrent,
abandonan el
swarm.
27. 27Choking Algorithm: Estados
Choked: (Estreñido).
Un peer está estreñido
cuando no está dispuesto a
compartir piezas con otro en
particular.
Interested: (Interesado)
Un peer está interesado en
otro cuando este tiene
partes faltantes del
torrent.
28. 28
Choking algorithm:
Downloaders
Cada 10 segundos, los 4 peers con el ratio mas
alto de descarga (Que estén interesados) son des-
chokeados, estos son conocidos como downloaders.
Los peers que tengan mejor ratio de descarga que
los downloaders pero no estén interesados son des-
chokeados para, que si se convierte en interesado,
el downloader con peor ratio es reemplazado por
este.
29. 29
Choking algorithm:
Optimist unchocking
Cada 30 segundos, se hace un-choke
a un peer al azar, sin importar si
tiene ratio de subida, dando
prioridad a los peers mas
recientes, de esta forma se
garantiza que los nuevos peers del
swarm tengan piezas para compartir.
30. 30
Choking Algorithms:
Estrategias
Rare first
Se le da prioridad a las
piezas mas raras (o menos
disponibles en el swarm)
Sequential
Se le da prioridad a las
primeras piezas, y se
descarga de forma
secuencial
31. 31Super Seeding
El super-seeding es una
estrategia de subida, en la que se
busca reducir el ancho de banda
subido, o dificultar el rastreo
del primer seeder.
El Peer, no se va a presentar al
swarm como un peer normal, sino
que va a entrar como un leecher. Y
va a anunciar distintas piezas
descargadas, diferentes por cada
peer conectado, sin anunciar que
tiene otras.
32. 32Super Seeding
Lo que se busca es subir
cada pieza solo una vez,
y que sea el resto del
swarm el que se vayan
compartiendo las piezas.
Al terminar de comartir
una pieza con un peer,
este puede anunciar que
descargo otra, para asi
compatirla con este.
34. 34Wire protocol
Los wires (cables), son la
representación de la conexión entre
dos peers. Esta es bidireccional y
está basada en el envio y recibo de
paquetes simples.
37. 37Wire Protocol: Handshake
[pstrlen][pstr][reserved][info_hash][peer_id]
13 42 69 74 54 6f 72 72 65 6e 74 20 70 72 6f 74 6f 63 6f 6c 00 00 00 00 00 00 00 00
19 B i t T o r r e n t p r o t o c o l -
9b a3 20 60 b7 ad 96 d0 a0 16 78 d1 dd e9 32 98 e5 a9 34 c2 2d 41 5a 32 30 36 30 2d
- -AZ2060-
00 00 00 00 00 00 00 00 00 00 00 00
41. 41BEP10
El protocolo torrent es extendible, a
través de la definición BEP10, la cual
agrega un mensaje (id=20) con la
posibilidad de enviar mensajes
extendidos, el id de mensage extendido
0x00, está reservado al handshake
extendido. En el que se dará información
sobre las extensiones soportadas.