# QUIC ストリームと HTTP/3

HTTP/2 では完全なストリームと多重化のコンセプトを TCP 上で独自に設計する必要がありました。

一方 HTTP/3 は QUIC 用に作られたので、QUIC のストリームを最大限に活用することができます。

HTTP/3 を介して行われる HTTP リクエストはストリームの特定のセットを利用します。

## HTTP/3 フレーム

HTTP/3 はつまり QUIC ストリームを作成し、フレームのセットを通信先の相手へ送信することを意味します。

HTTP/3 にはいくつかの (2018年12月18日の時点では9個！) フレームが存在します。中でも最も重要なものは次のとおりです:

* HEADERS 圧縮された HTTP ヘッダを送信
* DATA バイナリデータを送信
* GOAWAY このコネクションをシャットダウンしてください

## HTTP リクエスト

クライアントは、自身が開始した *双方向* QUIC ストリーム上で HTTP リクエストを送信します。

1つのリクエストは1つの HEADERS フレームで構成され、場合によっては他に1、2つのフレームが続きます: 一連の DATA フレーム、またはトレーラー用の 最後の HEADERSリクエストを送信した後、クライアントはストリームを閉じます。

## HTTP レスポンス

サーバーは、HTTP レスポンスを双方向ストリーム上で返します。

一連の DATA フレーム、またはトレーラー HEADERS フレームからなる1つの HEADERS フレーム。

## QPACK ヘッダ

HEADERS フレームには QPACK アルゴリズムにより圧縮された HTTP ヘッダが含まれています。

QPACK は HTTP/2 で使われている HPACK 圧縮 ([RFC7541](https://httpwg.org/specs/rfc7541.html)) と似ていますが、送信されるストリームの順序に関わらず動作するように変更されています。

QPACK は エンドポイント間で2つの単方向 QUIC ストリームを加えて利用します。

これらのストリームは動的なテーブル情報をそれぞれ伝えるために使われます。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://http3-explained.haxx.se/ja/h3/h3-streams.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
