httpで破損したダウンロードを取得することは可能ですか?


11

長い間、サーバー上で破損しておらず、HTTPプロトコルの実装が正しい限り、HTTPを介して破損したファイルをダウンロードすることは実際には不可能であると想定してきました。

そのため、ダウンロードサイトがダウンロード用に提供するファイルのmd5ハッシュを提供しているのを見て、私はいつも笑いました。ファイルをダウンロードする場合、サイズは正しいが、コンテンツはそうではないという事例を以前に見たことがありません。

さて、今日、この最初のケースがありました。Ubuntuのisoをダウンロードし、インストールしようとしましたが、失敗し、長い調査の後(理由はダウンロードが破損しているとは信じられませんでした)、MD5を確認しました。正しい)。それで私はそれを再ダウンロードし、さらに別の間違ったmd5を手に入れました。3回目のダウンロードでのみ、md5は正しかった。

だから私の質問は、実装が正しく、転送が正常に完了し、サーバー上のファイルが正しいと仮定して、原則としてhttp経由で破損したダウンロードを取得することは可能ですか?これが可能である場合、これはどのように起こりますか?


回答:


9

はい、特に低品質のインターネット接続(通常はワイヤレス)で可能ですが、一部の有線接続(私が持っている接続など)も高速でエラー率が高くなります。

HTTPプロトコルには、データの整合性を確保するための規定がありません。トランスポート層では、TCPにチェックサムを使用したエラー検出機能がありますが、信頼性はあまり高くありません


ハッシュまたはデジタル署名を提供する別の理由があります。多くの場合、実際のファイルは多くのミラーサーバーに分散されますが、100%安全であるとは限りません。検証するハッシュまたは署名がない場合、ミラーにアクセスできる(必ずしも正当ではない)誰かがファイルを置き換えて、Webサイトがホストされている完全に別のサーバーに侵入することなく検出されないままになります。


HTTPではなくBitTorrentでUbuntuをダウンロードすると、ファイルの自動検証を取得できます。(各ピースはダウンロード時に検証されるため、すべてを再ダウンロードする必要はありません。)


1
いい答えです。ただし、気にしない場合は、このトピックをもう少し詳しく調べたいと思います。「高速」部分は非常に重要であることが判明しました。自宅で問題が発生したことは一度もありませんでしたが、このUbuntu ISOのダウンロードは仕事中で、速度は約5Mb / sでした。周囲のほとんどすべてがTCPに基づいているため、TCPが信頼できないことを受け入れるのは困難です。TCPの非信頼性に関するこのウィキペディアの記事以外に何かありますか?高速が問題にどの程度影響するかを正確に知っていますか?前もって感謝します。
アンドリューサビニク

1
@zespri:TCPは信頼できるはずですが、チェックサムはすべてのエラーを100%キャッチすることはできません。高速は、特定の接続タイプまたは信頼性の低いリンクでのみ要因になります...残念ながら、これは必ずしもあなたの終わりではなく、あなたとサーバーの間のどこでも発生する可能性があります。(異なる国にあるミラーからのダウンロードをテストします。)もちろん、サーバーのファイルシステム上でファイルが既に破損している可能性もあります...
user1686

1
破損の可能性が小さい場合、あなたとサーバーの間のホップ数を増やすと破損の可能性が高くなりますか?
トレバーボイドスミス

1
@Trevor:リンクの品質に依存します。イーサネット上の10ホップは、WiFi上のシングルホップよりもはるかに信頼性があります。(ルーター/スイッチ自体がデータを破損することはほとんどありません。通常はそれが原因の接続です。)
user1686

これは、HTTP自体が壊れているため、修正する必要があるという意味ではありませんか?
still_dreaming_1

1

Grawityが言ったように、それは可能ですが、さらに、私が気づいたことは:

インターネット接続が安定していても、正当な理由がなくてもダウンロードが早く終了する可能性があります。

そして最も重要なことは、メモリが不良な場合、ダウンロードがディスクに書き込まれる前にメモリにキャッシュされ、メモリが不良であるため、ファイルを誤って書き込んでいる可能性があります。常に悪いダウンロードがある場合、これは高い可能性です。


ああ、再開をサポートせずにダウンロードをランダムに最大50%カットするWebサーバーが嫌いです
...-user1686

1
Wil:ええ、カットオフはしばしばあります。そのため、サイズが正確に正しいと仮定して、特に質問からそれらを除外しました。コメントありがとうございます。
アンドリューサビニク

うん「サイズは正確に正しいです」この質問のための重要な声明である
トレバー・ボイド・スミス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.