¿Qué es una subida por fragmentos?
Una subida por fragmentos divide un archivo en rangos de bytes que se transmiten y registran de forma independiente. Una implementación reanudable permite reintentar el envío de los fragmentos faltantes sin volver a enviar el archivo completo.
Cómo funcionan las subidas por fragmentos
Un componente de subida reanudable establece el estado de la transferencia, divide el origen en partes identificadas y registra qué rangos de bytes ha aceptado el servidor. Las partes pueden enviarse de forma secuencial o concurrente; en los protocolos basados en partes, una operación de finalización verifica y ensambla el objeto después, mientras que los protocolos basados en posiciones de bytes, como el protocolo tus, finalizan cuando la posición aceptada alcanza la longitud declarada. Esta capa de protocolo se sitúa antes de la inspección y el procesamiento multimedia, lo que permite que las tareas de recepción de grandes volúmenes de datos sobrevivan a pérdidas de conexión, aunque exige gestionar explícitamente las posiciones de bytes, los reintentos duplicados, la caducidad y la integridad final.
Datos clave
- Un protocolo reanudable necesita un identificador de subida estable y una posición de bytes o una lista de partes que sirvan como fuente de referencia; confiar solo en el progreso local del cliente puede hacer que se omitan bytes tras la pérdida de una respuesta.
- Los reintentos deberían ser idempotentes o verificarse mediante sumas de verificación, porque un servidor puede haber almacenado un fragmento aunque la confirmación nunca haya llegado al cliente.
- Que las partes individuales sean válidas no demuestra que el archivo sea válido. La finalización debe verificar el orden, la longitud total esperada y, preferiblemente, un resumen hash del objeto completo antes de que comience el procesamiento posterior.
Cuándo son importantes las subidas por fragmentos
Usa subidas por fragmentos para archivos grandes o clientes en redes inestables, donde reiniciar una transferencia resultaría costoso. El servidor debe validar el orden y el tamaño de los fragmentos, así como el ensamblado final; de lo contrario, podría generar archivos incompletos.