¿Es posible obtener descargas corruptas con http?

11

Durante mucho tiempo supuse que no es realmente posible descargar un archivo dañado a través de http, siempre y cuando no esté dañado en el servidor y la implementación del protocolo http sea correcta, lo que probablemente sea el caso del software convencional moderno.

Así que siempre me reí entre dientes cuando vi que un sitio de descarga ofrece un hash md5 de un archivo que proporcionan para descargar. No he visto un caso antes, donde descargo un archivo, el tamaño es correcto pero el contenido no lo es.

Bueno, hoy tuve un primer caso de esto. Descargué un iso de Ubuntu, intenté instalarlo, falló y después de una larga investigación (simplemente no podía creer que la razón pudiera ser una descarga corrupta), verifiqué el MD5 y qué sabes, estaba mal (el tamaño era correcto). Así que lo volví a descargar y obtuve otro md5 equivocado. Solo en mi tercera descarga, el md5 era correcto.

Entonces mi pregunta es, ¿es posible, en principio, obtener una descarga corrupta a través de http, suponiendo que la implementación sea correcta, que la transferencia haya finalizado con éxito y que el archivo sea correcto en el servidor. Si esto es posible, ¿cómo puede suceder esto?

Andrew Savinykh
fuente

Respuestas:

9

Sí, es posible, especialmente en conexiones de Internet de baja calidad, generalmente inalámbricas, pero algunas conexiones por cable (como la que tengo) también tienen altas tasas de error a altas velocidades.

El protocolo HTTP no tiene disposiciones para garantizar la integridad de los datos. En la capa de transporte, TCP hace que la detección de errores mediante el uso de una suma de comprobación, pero no es muy fiable .


Hay otra razón para proporcionar hashes o firmas digitales. A menudo, los archivos reales se distribuyen en muchos servidores espejo, lo que no puede garantizarse que sea 100% seguro. Si no hay un hash o una firma para verificar, alguien con acceso a un espejo (no necesariamente legítimo) podría reemplazar los archivos y permanecer sin ser detectado, sin tener que ingresar a un servidor completamente diferente donde está alojado el sitio web.


Puede obtener la verificación automática de archivos si descarga Ubuntu a través de BitTorrent en lugar de HTTP. (Cada pieza se verifica en el momento de la descarga, por lo que nunca tendrá que volver a descargarla por completo).

usuario1686
fuente
1
Buena respuesta. Sin embargo, me gustaría explorar el tema un poco más, si no le importa. La parte de "alta velocidad" resultó ser muy relevante. Nunca tuve problemas en casa, pero las descargas ISO de Ubuntu que hice fue en el trabajo y la velocidad era de aproximadamente 5Mb / s. Es difícil para mí aceptar que TCP no es confiable, porque casi todo lo que se basa está basado en TCP. ¿Hay algo más que este artículo de Wikipedia sobre la falta de fiabilidad de TCP? ¿Sabes exactamente cómo la alta velocidad afecta el problema? Gracias de antemano.
Andrew Savinykh
1
@zespri: se supone que TCP es confiable, pero la suma de comprobación no puede detectar el 100% de todos los errores. La alta velocidad es solo un factor con ciertos tipos de conexión, o sobre enlaces poco confiables ... Lo que desafortunadamente puede ocurrir en cualquier lugar entre usted y el servidor, no necesariamente inmediatamente al finalizar. (Que había prueba la descarga de los espejos ubicados en diferentes países.) Hay, por supuesto, también la posibilidad de que el archivo ya estaba dañado en el sistema de archivos del servidor ...
user1686
1
Si hay una pequeña probabilidad de corrupción, ¿entonces aumentar el número de saltos que tiene entre usted y el servidor aumentaría la posibilidad de corrupción?
Trevor Boyd Smith
1
@Trevor: depende de la calidad del enlace. Diez saltos a través de Ethernet son mucho más confiables que un solo salto a través de WiFi. (Los routers / switches mismos datos casi nunca corrupta; por lo general es la conexión que lo hace.)
user1686
¿No significa esto que el HTTP en sí mismo está roto y debería repararse?
still_dreaming_1
1

Como dijo Grawity, es posible, pero además, lo que he notado:

Incluso con conexiones a Internet estables, es posible que una descarga finalice antes de tiempo sin ningún tipo de razón válida: puede suceder.

Y lo más importante, si tiene mala memoria, es posible que la descarga se guarde en la memoria caché antes de escribirse en el disco, y como la memoria es mala, está escribiendo el archivo incorrectamente. Si constantemente tiene malas descargas, esta es una alta posibilidad.

William Hilsum
fuente
Oh, odio servidores web que cortan al azar de descargas en ~ 50% sin ningún tipo de apoyo para la reanudación ...
user1686
1
Wil: Sí, los cortes son a menudo, y debido a esto los excluí específicamente de mi pregunta, diciendo que supongo que los tamaños son exactamente correctos. Gracias por tu comentario.
Andrew Savinykh
Sí, esa es una declaración clave para esta pregunta "los tamaños son exactamente correctos"
Trevor Boyd Smith