Apakah mungkin untuk mengunduh yang rusak dengan http?

11

Untuk waktu yang lama saya berasumsi bahwa tidak benar-benar mungkin untuk mengunduh file yang rusak melalui http selama tidak rusak di server dan implementasi protokol http sudah benar, yang kemungkinan besar merupakan kasus untuk perangkat lunak arus utama modern.

Jadi saya selalu terkekeh ketika melihat situs pengunduhan menawarkan hash md5 dari file yang mereka sediakan untuk diunduh. Saya belum pernah melihat kasus sebelumnya, di mana saya mengunduh file, ukurannya sudah benar tetapi isinya tidak.

Nah, hari ini, saya punya kasus pertama tentang ini. Saya mengunduh iso Ubuntu, mencoba menginstalnya, gagal dan setelah penelitian panjang (saya tidak percaya bahwa alasannya bisa karena unduhan yang rusak) Saya memeriksa MD5 dan apa yang Anda tahu, itu salah (ukurannya salah benar). Jadi saya mengunduh ulang dan mendapat md5 yang salah lagi. Hanya pada unduhan ketiga saya md5 benar.

Jadi pertanyaan saya adalah, mungkinkah pada prinsipnya untuk mendapatkan unduhan yang rusak melalui http, dengan anggapan bahwa implementasinya benar, transfer telah selesai dengan sukses dan bahwa file tersebut benar di server. Jika ini mungkin, lalu bagaimana ini bisa terjadi?

Andrew Savinykh
sumber

Jawaban:

9

Ya, itu mungkin, terutama pada koneksi Internet berkualitas buruk - biasanya nirkabel, tetapi beberapa koneksi kabel (seperti yang saya miliki) juga memiliki tingkat kesalahan tinggi pada kecepatan tinggi.

Protokol HTTP tidak memiliki ketentuan untuk memastikan integritas data. Pada layer transport, TCP memang memiliki deteksi kesalahan dengan menggunakan checksum, tetapi itu tidak terlalu dapat diandalkan .


Ada alasan lain untuk menyediakan hash atau tanda tangan digital. Seringkali, file aktual didistribusikan melalui banyak server mirror, yang tidak dapat dijamin 100% aman. Jika tidak ada hash atau tanda tangan untuk diverifikasi, seseorang dengan akses ke mirror (tidak harus sah) dapat mengganti file dan tetap tidak terdeteksi, tanpa harus masuk ke server yang sama sekali berbeda di mana situs web di-host.


Anda bisa mendapatkan verifikasi file secara otomatis jika Anda mengunduh Ubuntu melalui BitTorrent alih-alih HTTP. (Setiap bagian diverifikasi saat unduhan, jadi Anda tidak perlu mengunduh ulang semuanya.)

pengguna1686
sumber
1
Jawaban yang bagus. Namun saya ingin lebih mengeksplorasi topik, jika Anda tidak keberatan. Bagian "kecepatan tinggi" ternyata sangat relevan. Saya tidak pernah memiliki masalah di rumah, tetapi unduhan ISO Ubuntu yang saya lakukan ini sedang bekerja dan kecepatannya sekitar 5Mb / s. Sulit bagi saya untuk menerima bahwa TCP tidak dapat diandalkan, karena hampir semuanya didasarkan pada TCP. Apakah ada hal lain selain artikel wikipedia tentang TCP yang tidak dapat diandalkan ini? Apakah Anda tahu persis bagaimana kecepatan tinggi mempengaruhi masalah ini? Terima kasih sebelumnya.
Andrew Savinykh
1
@zespri: TCP seharusnya dapat diandalkan, tetapi checksum tidak dapat menangkap 100% dari semua kesalahan. Kecepatan tinggi hanya merupakan faktor dengan jenis koneksi tertentu, atau melalui tautan yang tidak dapat diandalkan ... Yang sayangnya dapat terjadi di mana saja antara Anda dan server, tidak serta merta langsung di ujung Anda. (Saya akan menguji pengunduhan dari mirror yang berlokasi di berbagai negara.) Tentu saja ada juga kemungkinan file Anda sudah rusak pada sistem file server ...
user1686
1
jika ada kemungkinan kecil korupsi, maka meningkatkan jumlah hop yang Anda miliki di antara Anda dan server akan meningkatkan kemungkinan korupsi ???
Trevor Boyd Smith
1
@ Trevor: Tergantung pada kualitas tautan. Sepuluh hop lebih dari Ethernet jauh lebih dapat diandalkan daripada satu hop melalui WiFi. (Router / switch sendiri hampir tidak pernah merusak data; biasanya koneksi yang melakukannya.)
user1686
Bukankah ini berarti HTTP itu sendiri rusak dan harus diperbaiki?
still_dreaming_1
1

Seperti yang dikatakan Grawity, itu mungkin, tetapi di samping itu, apa yang saya perhatikan:

Bahkan dengan koneksi internet yang stabil, pengunduhan dapat dilakukan lebih awal tanpa alasan yang sah - itu bisa saja terjadi.

Dan yang paling penting, jika Anda memiliki memori buruk, ada kemungkinan mengunduh cache dalam memori sebelum ditulis ke disk, dan karena memori buruk, itu menulis file salah. Jika Anda selalu memiliki unduhan yang buruk, ini adalah kemungkinan yang tinggi.

William Hilsum
sumber
Oh, saya benci webservers yang secara acak memotong unduhan di ~ 50% tanpa dukungan untuk melanjutkan ...
user1686
1
Wil: Ya, sering terputus, dan karena ini saya secara khusus mengeluarkan mereka dari pertanyaan saya, mengatakan bahwa saya berasumsi bahwa ukurannya tepat. Terima kasih atas komentar Anda.
Andrew Savinykh
Ya itu adalah pernyataan kunci untuk pertanyaan ini "ukurannya tepat"
Trevor Boyd Smith