Чи можна пошкодити завантаження за допомогою http?


11

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

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

Ну, сьогодні у мене був перший випадок цього. Я завантажив iso Ubuntu, спробував його встановити, він не вдався і після тривалого дослідження (я просто не міг повірити, що причиною може бути пошкоджена завантаження) я перевірив MD5, і що ви знаєте, це було неправильно (розмір був правильно). Тому я повторно завантажив його та отримав ще один неправильний md5. Тільки на моєму третьому завантаженні md5 було правильним.

Отже, моє запитання полягає в тому, чи можна в принципі отримати пошкоджене завантаження через http, якщо припустити, що реалізація правильна, передача завершена успішно і що файл правильний на сервері. Якщо це можливо, то як це може статися?


Відповіді:


9

Так, це можливо, особливо на низькоякісних підключеннях до Інтернету - як правило, бездротових, але деякі дротові з'єднання (наприклад, у мене) також мають високі показники помилок при високій швидкості.

Протокол HTTP не містить жодних положень щодо забезпечення цілісності даних. На транспортному рівні TCP робить є виявлення помилок за допомогою контрольної суми, але це не дуже надійні .


Є ще одна причина надання хешей чи цифрових підписів. Часто фактичні файли поширюються на багатьох дзеркальних серверах, що не може бути гарантовано на 100% захищеним. Якщо для підтвердження немає хешу чи підпису, хтось із доступом до дзеркала (не обов'язково законного) може замінити файли та залишитися непоміченими, не потребуючи прориву на зовсім інший сервер, на якому розміщений веб-сайт.


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


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
Віл: Так, часто обрізають часто, і через це я спеціально виключив їх із мого питання, сказавши, що я припускаю, що розміри є абсолютно правильними. Дякую за коментар
Андрій Савіних

Так, це ключове твердження для цього питання "розміри точно такі"
Тревор Бойд Сміт,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.