BT9G LABS / DHT a fondo #09
De Magnet Link a Metadata: flujo completo de Peer Discovery y BEP 9/10
Sigue un Magnet desde su InfoHash hasta DHT, conexión con Peer, negociación BEP 10 y recuperación de Metadata por BEP 9.
BT9G Labs / DHT Deep Dive #09. Cómo una URI centrada en un hash termina produciendo nombres de archivos, tamaños y Metadata validada.
Resumen rápido
- Tema: De Magnet Link a Metadata: flujo completo de Peer Discovery y BEP 9/10
- Palabras clave: Magnet link, Torrent Metadata, BEP 9, BEP 10, InfoHash
- Audiencia: ingenieros backend, investigadores de protocolos, ingenieros de búsqueda e implementadores de BitTorrent
- Objetivo: Explicar el mecanismo con suficiente precisión como para apoyar decisiones reales de arquitectura de crawling, indexación y búsqueda.
Vista del sistema
Un Magnet está incompleto por diseño
La parte esencial de una Magnet URI suele ser xt=urn:btih:... u otra identidad de contenido. Puede incluir display name o Tracker, pero normalmente no contiene el info dictionary completo. Por tanto no permite conocer de forma fiable la lista de archivos o el tamaño total.
La idea es iniciar discovery solo con la identidad y recuperar los datos faltantes después.
Primero hacen falta Peer candidates
El cliente obtiene endpoints mediante DHT, Tracker u otras fuentes, se conecta y verifica el InfoHash en el BitTorrent handshake. Muchos endpoints ya estarán offline, así que un scheduler real prueba varios candidatos.
get_peers proporciona candidatos; no transfiere Metadata.
BEP 10 → BEP 9 → validación
El extended handshake indica si existe ut_metadata, cuál es su message ID local y, a veces, metadata_size. BEP 9 permite pedir los Metadata pieces. Tras reunirlos, el cliente debe recomponer los bytes y validar la identidad esperada.
Solo el resultado validado debería entrar en canonical storage y en el índice de búsqueda.
Esquema de implementación
magnet(infohash)
-> discover peers
-> BitTorrent handshake
-> BEP 10 extended handshake
-> ut_metadata requests
-> assemble info dictionary
-> hash(info dictionary) == expected infohash ?
-> parse and index
Notas de ingeniería de BT9G Labs
En un indexador como BT9G importa más separar correctamente la identidad del contenido, las observaciones de red de corta duración, el estado de adquisición y los documentos de búsqueda que maximizar el número bruto de eventos. Cada campo derivado de DHT o de un Peer debería conservar su fuente y marca temporal, y las métricas deberían dividirse por etapas: discovery, conexión, handshake, soporte de extensiones, obtención de Metadata, validación, almacenamiento e indexación.
Errores comunes
- Esperar una lista completa de archivos dentro del Magnet.
- Tratar
get_peerscomo API de Metadata. - Fijar un ID global para
ut_metadata. - Indexar Metadata sin validar el hash.
Artículos relacionados de BT9G Labs
- ¿Por qué DHT ve tantos InfoHash? Swarm Discovery a escala de Internet
- Cómo un DHT Crawler descubre InfoHash: Active Lookup, observación y diseño responsable
- BEP 9 ut_metadata explicado: obtener Torrent Metadata desde Peer
- BEP 10 Extension Protocol: ampliar BitTorrent sin romper compatibilidad
Referencias
Siguiente artículo: BEP 9 ut_metadata explicado: obtener Torrent Metadata desde Peer →
Este artículo describe el comportamiento de protocolos públicos de BitTorrent con fines de ingeniería e investigación; no implica que todo Swarm observado esté disponible, sea válido o esté autorizado para su redistribución.