Rangeリクエスト(れんじりくえすと)
最終更新:2026/4/27
Rangeリクエストは、HTTPプロトコルにおいて、ファイルの一部のみを要求するために使用される技術である。
別名・同義語 部分コンテンツ要求バイトレンジリクエスト
ポイント
動画や音声ストリーミング、大きなファイルのダウンロードにおいて、効率的なデータ転送を実現するために用いられる。
Rangeリクエストとは
Rangeリクエストは、HTTP/1.1プロトコルで導入された機能で、クライアントがサーバーに対して、リソース全体ではなく、特定の部分のみを要求することを可能にします。これは、大きなファイルをダウンロードする際や、メディアストリーミングにおいて非常に有効な技術です。
動作原理
クライアントは、HTTPヘッダーのRangeフィールドを使用して、要求する範囲を指定します。例えば、Range: bytes=0-1023は、ファイルの先頭1024バイトを要求することを意味します。サーバーは、要求された範囲のデータのみをレスポンスとして送信します。
利用場面
- 動画/音声ストリーミング: 動画や音声を再生する際に、必要な部分だけをダウンロードすることで、再生開始までの時間を短縮し、帯域幅を節約します。
- 大きなファイルのダウンロード: ファイル全体をダウンロードする代わりに、必要な部分だけをダウンロードすることで、ダウンロード時間を短縮します。また、ダウンロード中にエラーが発生した場合でも、ダウンロード済みの部分を再送する必要がありません。
- シーク機能: 動画や音声の再生位置を移動する際に、現在の位置から必要な部分だけをダウンロードすることで、スムーズなシークを実現します。
- 並列ダウンロード: ファイルを複数の範囲に分割し、それぞれの範囲を並行してダウンロードすることで、ダウンロード速度を向上させます。
HTTPステータスコード
サーバーがRangeリクエストを正常に処理した場合、206 Partial Contentステータスコードを返します。これは、リクエストされた範囲のデータのみがレスポンスに含まれていることを示します。
注意点
サーバーがRangeリクエストをサポートしていない場合、416 Range Not Satisfiableステータスコードを返すことがあります。また、サーバーによっては、Rangeリクエストの範囲が大きすぎたり、不適切だったりする場合にも、エラーを返すことがあります。