Возможно ли получить поврежденную загрузку с http?

11

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

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

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

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

Андрей Савиных
источник

Ответы:

9

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

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


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


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

user1686
источник
1
Хороший ответ. Однако я бы хотел немного больше изучить эту тему, если вы не возражаете. «Скоростная» часть оказалась очень актуальной. У меня никогда не было никаких проблем дома, но эта загрузка Ubuntu ISO, которую я делал, была на работе и скорость была около 5 Мбит / с. Мне трудно признать, что TCP ненадежен, потому что почти все вокруг основано на TCP. Есть ли что-нибудь еще, кроме этой статьи в Википедии о ненадежности TCP? Вы точно знаете, как высокая скорость влияет на проблему? Заранее спасибо.
Андрей Савиных
1
@zespri: TCP должен быть надежным, но контрольная сумма не может перехватить 100% всех ошибок. Высокая скорость зависит только от определенных типов соединений или от ненадежных соединений ... К сожалению, это может произойти где-то между вами и сервером, но не обязательно сразу с вашей стороны. (Я бы протестировал загрузку с зеркал, расположенных в разных странах.) Конечно, также существует вероятность того, что ваш файл уже был поврежден в файловой системе сервера ...
user1686
1
если есть небольшая вероятность повреждения, то увеличение количества прыжков между вами и сервером увеличит вероятность повреждения ???
Тревор Бойд Смит
1
@Trevor: зависит от качества ссылки. Десять переходов через Ethernet намного надежнее, чем один переход через WiFi. (Маршрутизаторы / коммутаторы сами почти никогда не коррумпированные данные, обычно это соединение , которое делает это.)
user1686
Разве это не означает, что сам HTTP сломан и должен быть исправлен?
still_dreaming_1
1

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

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

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

Уильям Хилсум
источник
О, я ненавижу веб-серверы, которые случайно отключают загрузки на ~ 50% без какой-либо поддержки для возобновления ...
user1686
1
Вил: Да, отрезки часто бывают, и из-за этого я специально исключил их из своего вопроса, сказав, что я предполагаю, что размеры точно соответствуют. Спасибо за ваш комментарий.
Андрей Савиных
Да, это ключевое утверждение для этого вопроса «размеры точно соответствуют»
Тревор Бойд Смит