Долгое время я предполагал, что на самом деле невозможно загрузить поврежденный файл через http, если он не поврежден на сервере и реализация протокола http верна, что, скорее всего, относится к современному распространенному программному обеспечению.
Поэтому я всегда смеялся, когда увидел, что сайт загрузки предлагает хэш md5 файла, который они предоставляют для загрузки. Я не видел ни одного случая, когда я загружал файл, размер правильный, а содержание - нет.
Ну, сегодня у меня был первый случай этого. Я скачал ISO-образ Ubuntu, попытался установить его, он потерпел неудачу, и после долгих исследований (я просто не мог поверить, что причиной может быть поврежденная загрузка), я проверил MD5 и, как вы знаете, это было неправильно (размер был верный). Таким образом, я повторно загрузил это и получил еще один неправильный md5. Только на моей третьей загрузке md5 был верным.
Таким образом, мой вопрос, возможно ли в принципе получить поврежденную загрузку через http, предполагая, что реализация верна, передача успешно завершена и файл корректен на сервере. Если это возможно, то как это может произойти?
Ответы:
Да, это возможно, особенно при некачественных интернет-соединениях - обычно беспроводных, но некоторые проводные соединения (например, у меня) также имеют высокую частоту появления ошибок на высоких скоростях.
Протокол HTTP не имеет каких-либо положений для обеспечения целостности данных. На транспортном уровне TCP делает есть обнаружение ошибок с помощью контрольной суммы, но это не очень надежные .
Есть еще одна причина для предоставления хэшей или цифровых подписей. Зачастую фактические файлы распределяются по многим зеркальным серверам, что не может гарантировать 100% -ную безопасность. Если нет хэша или подписи для проверки, кто-то, имеющий доступ к зеркалу (не обязательно законный), может заменить файлы и остаться незамеченным, без необходимости взломать совершенно другой сервер, на котором размещен веб-сайт.
Вы можете получить автоматическую проверку файлов, если загрузите Ubuntu через BitTorrent вместо HTTP. (Каждая часть проверяется во время загрузки, поэтому вам никогда не придется повторно загружать всю ее часть.)
источник
Как сказал Гравити, это возможно, но кроме того, что я заметил:
Даже при стабильном подключении к Интернету загрузка может быть завершена досрочно без какой-либо уважительной причины - это может произойти.
И самое главное, если у вас плохая память, возможно, что загрузка кешируется в памяти перед записью на диск, и, поскольку память плохая, она записывает файл неправильно. Если у вас постоянно плохие загрузки, это высокая вероятность.
источник