É possível obter um download corrompido com http?

11

Por um longo tempo, presumi que não é realmente possível baixar um arquivo corrompido via http, desde que ele não esteja corrompido no servidor e a implementação do protocolo http esteja correta, o que provavelmente é o caso do software convencional moderno.

Então, eu sempre ria quando via um site de download oferecer um hash md5 de um arquivo que eles forneciam para download. Eu nunca vi um caso antes, onde baixei um arquivo, o tamanho está correto, mas o conteúdo não.

Bem, hoje, eu tive um primeiro caso disso. Eu baixei um iso do Ubuntu, tentei instalá-lo, ele falhou e depois de uma longa pesquisa (eu simplesmente não conseguia acreditar que o motivo poderia ser um download corrompido), verifiquei o MD5 e o que você sabe, estava errado (o tamanho era corrigir). Então eu re-baixei e tenho mais um MD5 errado. Somente no meu terceiro download o md5 estava correto.

Portanto, minha pergunta é: é possível, em princípio, obter download corrompido por http, assumindo que a implementação esteja correta, a transferência tenha sido concluída com êxito e que o arquivo esteja correto no servidor. Se isso for possível, como isso pode acontecer?

Andrew Savinykh
fonte

Respostas:

9

Sim, é possível, especialmente em conexões de Internet de baixa qualidade - geralmente sem fio, mas algumas conexões com fio (como a que eu tenho) também têm altas taxas de erro em alta velocidade.

O protocolo HTTP não possui disposições para garantir a integridade dos dados. Na camada de transporte, TCP faz tem detecção de erros usando um checksum, mas não é muito confiável .


Há outro motivo para fornecer hashes ou assinaturas digitais. Freqüentemente, os arquivos reais são distribuídos por muitos servidores espelho, que não podem ser garantidos como 100% seguros. Se não houver hash ou assinatura para verificar, alguém com acesso a um espelho (não necessariamente legítimo) poderá substituir os arquivos e permanecer sem ser detectado, sem precisar entrar em um servidor completamente diferente no qual o site está hospedado.


Você pode obter a verificação automática de arquivos se baixar o Ubuntu por BitTorrent em vez de HTTP. (Cada peça é verificada no momento do download, para que você nunca precise baixar novamente a coisa toda.)

user1686
fonte
1
Boa resposta. No entanto, gostaria de explorar um pouco mais o assunto, se você não se importa. A parte "alta velocidade" acabou sendo muito relevante. Eu nunca tive problemas em casa, mas esses downloads ISO do Ubuntu que eu fiz estavam no trabalho e a velocidade era de cerca de 5Mb / s. É difícil aceitar que o TCP não é confiável, porque quase tudo se baseia no TCP. Existe mais alguma coisa além deste artigo da Wikipedia sobre a falta de confiabilidade do TCP? Você sabe exatamente como a alta velocidade afeta o problema? Agradeço antecipadamente.
Andrew Savinykh
1
@zespri: O TCP deve ser confiável, mas a soma de verificação não pode capturar 100% de todos os erros. A alta velocidade é apenas um fator com certos tipos de conexão ou através de links não confiáveis ​​... Que infelizmente podem ocorrer em qualquer lugar entre você e o servidor, não necessariamente imediatamente no seu final. (Eu testar o download de espelhos localizados em diferentes países.) Há, naturalmente, também a possibilidade de que o arquivo já foi corrompido no sistema de arquivos do servidor ...
user1686
1
se houver uma pequena probabilidade de corrupção, o aumento do número de saltos entre você e o servidor aumentaria a chance de corrupção ???
Trevor Boyd Smith
1
@ Trevor: Depende da qualidade do link. Dez saltos por Ethernet são muito mais confiáveis ​​do que um salto por WiFi. (Os roteadores / desliga-se dados quase nunca corrupto, é geralmente a conexão que faz isso.)
user1686
Isso não significa que o HTTP em si está quebrado e deve ser corrigido?
still_dreaming_1 30/12/2015
1

Como Grawity disse, é possível, mas além disso, o que eu notei:

Mesmo com conexões estáveis ​​à Internet, é possível que um download termine mais cedo, sem qualquer motivo válido - isso pode acontecer.

E o mais importante, se você tiver memória insuficiente, é possível que o download faça cache na memória antes de ser gravado no disco e, como a memória está ruim, está gravando o arquivo incorretamente. Se você constantemente tem downloads ruins, essa é uma alta possibilidade.

William Hilsum
fonte
Oh, eu odeio servidores web que cortam aleatoriamente fora de downloads em ~ 50%, sem qualquer apoio para retomar ...
user1686
1
Wil: Sim, os cortes são frequentemente, e por isso os excluí especificamente da minha pergunta, dizendo que presumo que os tamanhos sejam exatamente corretos. Obrigado pelo seu comentário.
Andrew Savinykh
Yep que é uma declaração chave para esta questão "os tamanhos são exatamente certo"
Trevor Boyd Smith