11

Долгое время я предполагал, что на самом деле невозможно загрузить поврежденный файл через http, если он не поврежден на сервере, а реализация протокола http верна, что, скорее всего, имеет место для современного основного программного обеспечения.

Поэтому я всегда смеялся, когда увидел, что сайт загрузки предлагает хэш md5 файла, который они предоставляют для загрузки. Я не видел ни одного случая, когда я загружал файл, размер правильный, а содержимое - нет.

Ну, сегодня у меня был первый случай этого. Я скачал ISO-образ Ubuntu, попытался установить его, он потерпел неудачу, и после долгих исследований (я просто не мог поверить, что причиной может быть поврежденная загрузка), я проверил MD5 и, как вы знаете, это было неправильно (размер был правильный). Таким образом, я повторно загрузил это и получил еще один неправильный md5. Только на моей третьей загрузке md5 был верным.

Поэтому мой вопрос: возможно ли в принципе получить поврежденную загрузку через http, при условии, что реализация верна, передача успешно завершена и файл корректен на сервере. Если это возможно, то как это может произойти?

2 ответа2

9

Да, это возможно, особенно при некачественном интернет-соединении - обычно беспроводном, но некоторые проводные соединения (например, у меня) также имеют высокую частоту появления ошибок на высоких скоростях.

Протокол HTTP не имеет каких-либо положений для обеспечения целостности данных. На транспортном уровне TCP имеет обнаружение ошибок с помощью контрольной суммы, но это не очень надежные.


Есть еще одна причина для предоставления хэшей или цифровых подписей. Зачастую фактические файлы распределяются по многим зеркальным серверам, что не может гарантировать 100% -ную безопасность. Если нет хэша или подписи для проверки, кто-то, имеющий доступ к зеркалу (не обязательно законный), может заменить файлы и остаться незамеченным, без необходимости взломать совершенно другой сервер, на котором размещен веб-сайт.


Вы можете получить автоматическую проверку файлов, если загружаете Ubuntu через BitTorrent вместо HTTP. (Каждая часть проверяется во время загрузки, поэтому вам никогда не придется повторно загружать всю ее часть.)

1

Как сказал Гравити, это возможно, но кроме того, что я заметил:

Даже при стабильном подключении к Интернету загрузка может быть завершена досрочно без какой-либо уважительной причины - это может произойти.

И самое главное, если у вас плохая память, возможно, что загрузка кешируется в памяти перед записью на диск, и, поскольку память плохая, она пишет файл неправильно. Если у вас постоянно плохие загрузки, это высокая вероятность.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .