¿Por qué es rápido descargar un archivo grande, mientras que descargar muchos archivos pequeños de diferentes fuentes es mucho más lento?

Las descargas de HTTP (S) van sobre TCP, que intenta descubrir la cantidad de ancho de banda disponible, y retrocede si usa demasiado. Las conexiones TCP no están vinculadas entre sí, por lo que cuando se descubre el límite de ancho de banda para su canal, no obtiene una conexión que desacelere la cantidad adecuada. Todos lo hacen.

Ahora, no siempre funciona de esa manera. Si de alguna manera compite con otros, en cualquier lugar entre usted y el servidor, su lote de clientes terminará más rápido, porque tomará más que su “parte justa” de ancho de banda.

HTTP / 2, un nuevo protocolo al que la web cambió silenciosamente, en realidad mueve muchas secuencias a través de la misma conexión TCP. Esto es bueno porque cuando cada archivo individual es pequeño, el “apretón de manos de tres vías” al comienzo de una conexión lleva mucho tiempo, porque estás haciendo conexiones repetidamente. Las versiones anteriores de HTTP podrían mover varios archivos a través de la misma conexión, pero HTTP / 2 en realidad puede transmitir bloques desde diferentes archivos.

Se suponía que debíamos hacer esto con un protocolo sucesor a HTTP, llamado SCTP, pero Internet no es confiable para nada más que TCP (y algunos UDP). Cortafuegos y todo eso.

Cada vez que descarga un archivo, hay una sobrecarga. Esa sobrecarga se debe al inicio de la conexión. Supongamos que está utilizando HTTP para descargar el archivo. Cada vez que descarga un archivo, los datos deben ir acompañados de un encabezado HTTP, que es necesario para que el archivo pase de la fuente remota a su computadora.

Al descargar a través de HTTP, se genera una conexión TCP. Lleva tiempo configurar la conexión.

Todos estos gastos generales, repetidos 100 veces, lo hacen más lento en comparación con la descarga de un solo archivo que es tan grande como el tamaño combinado de los 100 archivos.

Hay muchas razones. Algunos que vienen a mi mente en este momento son:
1. Cuando descarga 1000 archivos pequeños, debe solicitar 1000 al servidor (quizás 2 × 1000).
Una vez para cada archivo (quizás uno más para indicar que el archivo terminó).
Compare eso con una sola solicitud.

2. Casi todos los discos duros escriben datos más rápido en un archivo más grande que en muchos archivos pequeños.

La descarga de un solo archivo grande está limitada por el ancho de banda de la red, que en su caso parece ser de 1 Gbps. La descarga secuencial de muchos archivos pequeños está limitada por la latencia, que en su caso parece ser de 50 ms (bastante rápido). Puede descargar archivos pequeños mucho más rápido si descarga más de uno en paralelo.

Para una buena visión general sobre la latencia: https://www.igvita.com/2012/07/1