Cómo diseñar software como Internet Download Manager (IDM)

En primer lugar, es muy fácil desarrollar un software como IDM. Está disponible solo para el sistema operativo Windows. Entonces, todo lo que necesita es un Visual Studio y Windows SDK.

Manejo de múltiples solicitudes.

Por definición, un administrador de descargas es un programa que administra sus descargas, ofreciéndole opciones, como captura de video y audio, captura de sitios web, procesamiento de cola, pausar y reanudar descargas, e imponer restricciones de velocidad también.
Cómo lo hacen ? Para cualquier descarga, se crea una conexión con un servidor (usando una IP o una URL). IDM es básicamente un cliente que solicita datos a través de esta conexión. Esto significa que al servidor realmente no le importa quién pregunta los datos o con qué frecuencia los solicita. Todo lo que el servidor necesita saber es qué datos pregunta el cliente. Además, cuando múltiples solicitudes para descargar múltiples archivos / contenido llegan a IDM, mantiene una cola, que es la característica predeterminada en cada administrador de descargas.

Entonces, ¿qué hace que IDM sea tan eficiente y rápido?
Prácticamente crea múltiples conexiones de descarga con el servidor, cada una de las cuales se ejecuta en un hilo de descarga diferente. Todos los datos transferidos están realmente en bytes y el trabajo real del administrador de descargas es organizar esos bytes de la manera adecuada. IDM básicamente divide una descarga en múltiples transmisiones.

Bueno, pero en un escenario de la vida real, es un poco raro superar un límite de velocidad definido. Una razón es que los servidores tienen un límite en la cantidad de datos que sirven por segundo, de lo contrario, un solo cliente que sea lo suficientemente fuerte absorbería la mayor parte del ancho de banda del servidor. En segundo lugar y más importante, el proveedor de ISP (su proveedor de Internet) tendría un límite máximo en su límite de descarga. Ejemplo: con una conexión de 4 Mbps, la velocidad máxima podría ser de 512 KBps. Entonces, hagas lo que hagas, simplemente no puedes descargar más rápido que esto.

Organización de datos –

Como mencioné, todos los datos transferidos (descargados o cargados) son bytes. Para organizar estos bytes y finalmente organizar los fragmentos de datos descargados, usamos el rango de bytes, indicando a IDM, la posición y el rango de los bytes que ha descargado y dónde encajarían. El servidor puede proporcionar esta información o el cliente debe mantenerla al solicitar datos para un rango determinado.

¿IDM es 5 veces más rápido? –

Bueno, si ignora los límites y asume que puede descargar a cualquier velocidad y el servidor puede proporcionar datos a cualquier velocidad, sí, sería varias veces más rápido que una descarga secuencial, dependiendo de la cantidad de conexiones paralelas que ha iniciado para esa descarga. Entonces, ¿por qué no crear 100 o 1000 conexiones entonces? En primer lugar, debido a los límites después de un cierto límite de conexiones paralelas, alcanzaría la velocidad de saturación. En segundo lugar, para organizar diferentes fragmentos y combinarlos y reordenarlos en un archivo completo, también es necesario procesarlos. Entonces, con tantos subprocesos de descarga ejecutándose en paralelo, la sobrecarga para organizar los datos puede ser abrumadora. Por lo tanto, debe haber un número óptimo de conexiones paralelas que puedan sobrevivir de manera más eficiente.

Gracias por el A2A.

Edición 1 (una adición) –

La aceleración de descarga, también conocida como descarga multiparte, es un término para el método empleado por software como los administradores de descargas para descargar un solo archivo dividiéndolo en segmentos y usando varias conexiones simultáneas para descargar estos segmentos desde un único servidor.
La razón para hacerlo es eludir las limitaciones del ancho de banda del servidor por conexión. Debido a que en situaciones normales de red, todas las conexiones individuales se tratan por igual, en lugar de las transferencias de archivos reales, las conexiones múltiples ofrecen una ventaja sobre los enlaces saturados sobre las conexiones simples, tanto en términos de asignación de ancho de banda total como de resistencia. Sin embargo, muchos servidores implementan un número máximo de conexiones simultáneas por cliente para mitigar esto.
Esto no debe confundirse con la descarga segmentada, que permite que un cliente descargue segmentos de un archivo simultáneamente desde múltiples servidores.
Fuente – Administrador de descargas

¿Cómo puede manejar múltiples solicitudes al mismo tiempo con la misma velocidad de red?

Lo que realmente hace es, simplemente utiliza y optimiza su conexión a Internet y garantiza que la conexión sea totalmente utilizada por los diferentes hilos de descarga que ha creado.
También proporciona un método para administrar las descargas de manera eficiente y aprovechar al máximo su conexión.

Algunos sitios web aceleran las descargas para que puedan enviar archivos de manera más uniforme a todos los usuarios, pero IDM lo evitará al solicitar diferentes partes del mismo archivo al mismo tiempo (llamado segmentación).

Revise este enlace

¿Cómo funciona un programa como IDM (administrador de descargas de Internet)?