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?
Respostas:
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.)
fonte
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.
fonte