Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

HTTP 206(ニセンロク)とは | 意味や読み方など丁寧でわかりやすい用語解説

HTTP 206(ニセンロク)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

部分コンテント (ブブンコンテント)

英語表記

HTTP 206 (トゥーハンドレッドシックス)

用語解説

HTTP 206 Partial Content(部分コンテンツ)は、HTTPステータスコードの一つで、クライアントがリクエストしたリソースの一部のみが正常に送信されたことを示す。これは、クライアントがRangeヘッダーを使用して、リソースの特定の部分だけを要求した場合にサーバーから返される。

通常、HTTPリクエストはリソース全体を要求する。しかし、大きなファイルをダウンロードする場合や、中断されたダウンロードを再開する場合など、リソースの一部だけが必要な状況がある。このような場合に、クライアントはRangeヘッダーを使用して、バイト範囲を指定してリクエストを送る。

例えば、Range: bytes=1024-2047 というヘッダーは、リソースの1024バイト目から2047バイト目までを要求することを意味する。サーバーがこのリクエストを正常に処理し、指定された範囲のデータを送信した場合、HTTPステータスコードとして206を返す。

206ステータスコードと共に、Content-Rangeヘッダーが返される。Content-Rangeヘッダーは、実際に送信されたデータの範囲と、リソース全体のサイズを示す。例えば、Content-Range: bytes 1024-2047/10000 というヘッダーは、送信されたデータが1024バイト目から2047バイト目までであり、リソース全体のサイズが10000バイトであることを意味する。

206ステータスコードの利用は、特に動画ストリーミングや大きなファイルのダウンロードにおいて重要となる。クライアントは、必要に応じてリソースの一部だけを要求し、サーバーはそれに応じて必要な部分だけを送信することで、帯域幅の節約やダウンロード速度の向上に貢献できる。例えば、動画の再生中にシークバーを操作して特定の位置にジャンプした場合、クライアントはその位置から再生に必要な部分のデータだけを要求する。

Rangeヘッダーには、複数の範囲を指定することも可能だ。例えば、Range: bytes=0-99,200-299 というヘッダーは、0バイト目から99バイト目までと、200バイト目から299バイト目までを要求することを意味する。この場合、サーバーはContent-Typeヘッダーにmultipart/byterangesを指定し、各範囲のデータを個別のパートとして送信する必要がある。multipart/byterangesは、複数の部分からなるレスポンスであることを示すMIMEタイプだ。各パートは、Content-Rangeヘッダーと実際のデータを含む。

サーバーがRangeヘッダーをサポートしていない場合、あるいは要求された範囲が不正な場合、通常はHTTP 416 Requested Range Not Satisfiable(リクエストされた範囲は処理できない)ステータスコードを返す。

206ステータスコードは、キャッシュにも影響を与える。部分的なコンテンツは、リソース全体とは異なるキャッシュエントリとして扱われるべきだ。そのため、Cache-Controlヘッダーなどを適切に設定し、キャッシュの整合性を保つ必要がある。

206ステータスコードを正しく実装するには、サーバーは以下の点を考慮する必要がある。

  • Rangeヘッダーの解析と検証:クライアントから送信されたRangeヘッダーを正しく解析し、要求された範囲が有効かどうかを検証する。
  • Content-Rangeヘッダーの生成:送信するデータの範囲とリソース全体のサイズを正確に記述したContent-Rangeヘッダーを生成する。
  • multipart/byterangesの処理:複数の範囲が要求された場合、multipart/byteranges形式でデータを送信する。
  • エラー処理:Rangeヘッダーがサポートされていない場合や、要求された範囲が不正な場合に適切なエラーコード(416など)を返す。
  • キャッシュ制御:部分的なコンテンツのキャッシュを適切に制御する。

このように、HTTP 206 Partial Contentは、クライアントとサーバー間の効率的なデータ転送を可能にする重要な機能であり、特に大規模なリソースを扱うWebアプリケーションにおいて不可欠である。システムエンジニアは、206ステータスコードの仕組みを理解し、適切に実装することで、ユーザーエクスペリエンスの向上に貢献できる。

関連コンテンツ