なぜ私のウェブブラウザは、残りのダウンロード時間を表示しないのですか?

ブラウザー(または他のアプリケーション)の忠実なダウンロード進行状況メーターは、手を空に投げただけで、残りのダウンロード時間を表示することを断念することがあります。なぜそれは時々投影されたダウンロード時間を釘付けし、それをすべて一緒に報告することができないのですか?

今日の質疑応答セッションは、Q&Aウェブサイトのコミュニティ主導型のグループである、スタック交換の細分化であるスーパーユーザーからの礼儀です。

SuperUserの読者Coldblackiceは、彼のブラウザがいつも汚れを食べるわけではないことを知りたい

ウェブブラウザでファイルをダウンロードすると、ダウンロードの進行状況がファイルの合計サイズやダウンロードの距離を「認識」していないことがあります。ダウンロードの速度と合計「不明」とします。

なぜブラウザはいくつかのファイルの最終的なサイズを知りませんでしたか?最初にこの情報をどこで取得しますか?

本当にどこですか?

スーパーユーザ投稿者Gronostajは以下の洞察を提供します

Webサーバーから文書を要求するために、ブラウザーはHTTPプロトコルを使用します。アドレスバーの名前を知ることができます(アドレスバーをクリックしてURLをコピーしてテキストエディタに貼り付けると、最初にhttp://が表示されます)。これは単純なテキストベースのプロトコルで、このように動作します

まず、あなたのブラウザはウェブサイトのサーバに接続し、ダウンロードしたいドキュメントのURL(ウェブページはドキュメントでもあります)と、ブラウザ自体の詳細(ユーザエージェントなど)を送信します。たとえば、SuperUserサイトhttp://superuser.com/にメインページを読み込むには、ブラウザが次のような要求を送信します

最初の行は、サーバーが返す文書を指定します。他の行はヘッダーと呼ばれ、次のようになります

これらの行は、サーバーが何をすべきかを決定するのに役立つ追加情報を送信します。

すべて正常であれば、サーバーは要求された文書を送信することによって応答します。応答はステータスメッセージで始まり、いくつかのヘッダー(ドキュメントの詳細)と最後にすべてがうまくいくとドキュメントの内容が続きます。これは、私の要求に対するSuperUserサーバーの応答がどのように見えるかです

最後の行の後、SuperUserのサーバーは接続を閉じます。

最初の行(HTTP / 1.1 200 OK)には応答コードが含まれています。この場合は200 OKです。これは、サーバーが要求どおりに文書を返すことを意味します。サーバーがそうしなければ、コードは何か他のものになります。あなたはおそらく404が見つかりませんでした、403は禁止されています。その後、ヘッダーが続きます。

ブラウザは応答で空の行を見つけたら、その行を通過したすべてが要求した文書の内容であることを認識します。この場合、<!DOCTYPE html>はスーパーユーザのホームページコードの最初の行です。もし私がダウンロードする文書を要求していたのであれば、ほとんどの文書形式は事前の処理なしでは判読できないので、おそらく何らかの不器用な文字になるでしょう。

ヘッダーに戻る。私たちにとって最も興味深いのは、最後のもの、Content-Lengthです。これは、空の行の後に何バイトのデータが必要かをブラウザに知らせるので、基本的にはバイト単位で表されるドキュメントのサイズです。このヘッダは必須ではなく、サーバによって省略されてもよい。ドキュメントのサイズを予測できない場合(ドキュメントがオンザフライで生成された場合など)、時には怠惰なプログラマーにはドライバのダウンロードサイトには一般的なものが含まれていません。また、知らない新参者によってウェブサイトが作成されることもありますそのようなヘッダーの

とにかく、理由が何であれ、ヘッダーが欠けている可能性があります。その場合、ブラウザはサーバがどれくらいのデータを送信するかを知らないので、サーバが接続を閉じるのを待って、ドキュメントサイズを不明と表示します。そしてそれが未知の文書サイズの理由です。

説明に追加するものがありますか?コメントの音が鳴ります。他の技術に精通したStack Exchangeユーザーからの回答をもっとたくさん読んでみたいですか?ディスカッションスレッド全体をチェックしてください。

DNAベースのデータストレージのデータ密度はかなり印象的です.1グラムのDNAストレージは455エクサバイトのデータを保存できます。