【入門編】HTTP/1.1のRangeヘッダーによる部分リクエストの仕様 – HTTPプロトコル・通信規格実践ガイド

巨大な荷物を「ひと口」ずつ受け取る魔法:HTTP Rangeリクエストの世界

こんにちは!ネットワークの世界へようこそ。今日は、Web通信の裏側で密かに、しかし確実に私たちの快適なブラウジングを支えている「ある賢い仕組み」についてお話しします。

普段、YouTubeで動画をシークバーで飛ばしたり、巨大なPDFファイルをダウンロードする際、途中で接続が切れても続きから再開できたりすることはありませんか?実はこれ、HTTP/1.1で導入された「Range(レンジ)ヘッダー」という技術が裏で大活躍しているからなんです。

今日は、この「賢い配達方法」について、一緒に紐解いていきましょう。

—

1. そもそも、なぜ「全部」運ぶ必要があるの?

想像してみてください。あなたは今、分厚い百科事典(1000ページあるとします)の「100ページ目だけ」が必要だとします。

もし、ネットワークの世界が「昔ながらの配達員」だけだったらどうなるでしょう?
あなたが「100ページ目を見たい」と伝えても、彼らは律儀に「百科事典の1ページ目から1000ページ目まで」のすべてを抱えてあなたの元へ走ってきます。

  • 時間: 1000ページ分運ぶのに時間がかかる。
  • 通信量: 999ページ分はゴミ箱行き。無駄すぎる。

これでは、効率が悪くてたまりませんよね。そこで登場するのが、「Rangeリクエスト」です。

—

2. 「Rangeヘッダー」という魔法のメモ

Rangeリクエストとは、ブラウザ(受け取り手)がサーバー(送り手)に対して、「ファイル全部じゃなくて、この範囲だけちょうだい!」と指示を出すためのメモのことです。

例えば、「動画の10MB目から20MB目までが欲しい」という指示を出すと、サーバーは非常に賢く反応します。

ブラウザが送る「注文書(リクエスト)」の例

GET /video.mp4 HTTP/1.1
Host: example.com
Range: bytes=10485760-20971519 # 「10MBから20MBまでちょうだい!」という指定

サーバーが返す「配達完了(レスポンス)」の例

ここで重要になるのが、ステータスコードの「206 Partial Content」です。

HTTP/1.1 206 Partial Content # 200(OK)ではなく、「一部だけ渡すよ」という合図
Content-Range: bytes 10485760-20971519/50000000 # 「今渡したのは10MB〜20MBで、全体は50MBだよ」
Content-Length: 10485760 # 渡したデータのサイズ

[ここから実際のバイナリデータが続く…]

206というステータスコードは、「百科事典の100ページ目だけを切り取って届けましたよ」という、サーバーからの「親切な報告」なんです。

—

3. なぜこれが「インフラ」として重要なの?

エンジニアとしてこの仕組みを知っておくべき理由は、大きく分けて2つあります。

1. 帯域の節約: 全データを送る必要がなくなるため、サーバーとネットワークの負荷が劇的に下がります。
2. レジューム(中断再開)機能: 大容量ファイルをダウンロード中に通信が切れても、「さっきまで50%まで受け取ったから、次は50%目から続きをちょうだい」と再開できます。これはユーザー体験(UX)を支える生命線です。

—

4. 現場で使えるデバッグのヒント

もし皆さんがAPIを開発したり、サーバーのトラブルシューティングをする際に、「動画が再生できない」「ダウンロードが途中で止まる」という問題に遭遇したら、まずはブラウザの「開発者ツール(F12キー)」を開いてみてください。

「ネットワーク」タブを見て、ステータスコードが206になっているか確認しましょう。

  • 206が返ってこない場合: サーバー側がRangeリクエストに対応していない可能性があります(設定で `Accept-Ranges: bytes` が有効になっていないなど)。
  • 416 Requested Range Not Satisfiable が返る場合: 「存在しない範囲(例えば50MBしかないファイルに対して60MB目以降を要求した)」を指示している可能性があります。

—

最後に:一歩ずつ理解していきましょう

最初は「Range」や「206」という言葉が難しく感じるかもしれませんが、要は「必要な分だけ切り取って受け取る」という、非常に理にかなったエコな仕組みです。

ネットワーク通信は、こうした「いかに効率よく、かつ相手に優しくデータを届けるか」という工夫の積み重ねでできています。この仕組みを理解しているだけで、皆さんがこれから作るWebサイトやインフラは、ぐっと洗練されたものになるはずです。

もし分からないことがあれば、いつでもまた聞きに来てくださいね。一歩ずつ、確実に深掘りしていきましょう!

コメント

タイトルとURLをコピーしました