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ステータスコードの仕組みを理解し、適切に実装することで、ユーザーエクスペリエンスの向上に貢献できる。