回答:
コーディングの観点から見ると、ダウンロードはHTTP応答ストリームに含まれる単なるバイト配列です。
HTTP 1.1プロトコルは(ページ30を参照)ヘッダのフィールドは、要求された応答のバイトオフセットおよび長さを指定する要求を可能にする「範囲」と呼ばれる含みます。
したがって、本質的には、「このURLでHTTPオブジェクトを渡してください。ただし、その1024番目から4096番目のバイトだけが必要です」と言うことができます。クライアントブラウザは、ダウンロード済みのファイルの一部にバイトストリームを追加します。クライアントは、すでにダウンロードされているファイルの長さを確認するだけで、再開する必要がある場所を判断し、増分して必要なオフセットを決定できます。
ダウンロードマネージャがどのように判断できるかについては、HTTP "HEAD"リクエストを送信します。応答コードが206(部分コンテンツ)の場合、httpストリームは再開をサポートします。
これは永続Cookieを使用して処理できます。セッションCookieと混同しないようにする か、サイトがASP.NET上に構築されている場合は[Viewstate]を使用できますが、これは良い方法ではありません。フランクトーマスがベストアンサーです。