Capítulo 3 Ruta de descarga: descarga paralela, recuperación y reensamblado (clave)

Para los destinatarios, «más rápido» se nota sobre todo de dos maneras: obtener varios fragmentos en paralelo para mejorar el rendimiento y poder recuperarse en redes débiles o al cambiar de red sin tener que empezar de nuevo. Desde el punto de vista de la ingeniería, la ruta de descarga es simétrica a la ruta de subida.

3.1 Objetos de descarga y manifiesto

  • Antes de descargar, el cliente DEBERÍA obtener el manifiesto para conocer el número total de fragmentos, su orden y cómo localizar cada objeto.
  • El manifiesto DEBE localizar de forma unívoca cada fragmento (mediante reglas de clave de objeto o un índice equivalente).

3.2 Descarga paralela

  • El cliente DEBERÍA descargar varios fragmentos a la vez para acercarse al límite del ancho de banda.
  • El cliente DEBERÍA usar una concurrencia limitada y reducirla cuando aumente la tasa de errores.
  • El beneficio de la concurrencia suele ser mayor cuando el RTT entre regiones es alto, porque una sola conexión se ve limitada con más facilidad por el RTT y la fluctuación.

3.3 Descarga reanudable

  • El cliente DEBE poder registrar el conjunto de fragmentos completados (por ejemplo, un mapa de bits o un conjunto de índices).
  • Tras una interrupción, el cliente DEBERÍA obtener solo los fragmentos que faltan, sin volver a descargar el archivo completo.
  • Si el servidor impone límites al número de descargas, el cliente DEBERÍA minimizar las descargas redundantes durante la recuperación para no malgastar el contador de descargas.

3.4 Reensamblado

  • El cliente DEBE reensamblar el archivo de salida en el orden de chunkIndex.
  • El cliente DEBERÍA usar escritura en streaming o reensamblado progresivo para reducir los picos de memoria (sobre todo en archivos muy grandes).
  • Si se empaquetan varios archivos, el cliente PUEDE entregar cada archivo por separado o usar un formato contenedor (según el diseño del producto).

3.5 Comprobaciones de integridad (resumen)

  • Tras la descarga, el cliente DEBERÍA verificar los fragmentos (por ejemplo, la coherencia del hash y de la longitud).
  • Si la verificación falla, DEBE cerrarse ante el fallo y reintentar el fragmento correspondiente.
  • Para los límites relativos a los fallos de cifrado o de autenticación, consulta las secciones correspondientes del documento técnico sobre seguridad y privacidad.