RFC 9113 Quiz

HTTP/2のmultiplexingを理解する

0 / 0

References (URLs)

狙い: ストリームのライフサイクル、フロー制御、シャットダウンを説明できるようにする。

Q1: HTTP/2がHTTP/1.1に対して追加した大きな能力はどれ

Multiple Choice
HTTP/2 を理解するときは, まず「1 本の connection の中に複数 stream が並んでいる」図を頭に持つと読みやすくなります. RFC 9113 は, その multiplexing を frame と state machine で定義する文書です.
1 TCP connection client と server の間 stream 1 HEADERS, DATA stream 3 HEADERS, DATA stream 5 HEADERS, DATA binary frame で交互に流れる
**Explanation:** **Terms:** multiplexing, stream, connection. HTTP/2はbinary framing layerで, 独立streamを同一connection上に流せる. **RFCを読むときの見方:** RFC 9113 は, 「複数の request/response を同時に流したい」という要求を, stream, frame, flow control, stream state に分けて定義しています. まず 1 connection の中に stream が何本もあると理解すると, 後続の frame や flow control の話も追いやすくなります. **Correct (B):** multiplexingにより, HTTP/1.1のpipeliningに比べてHTTPレイヤのhead-of-lineを減らします. 1 connection しかなくても, stream ごとに独立したやり取りを進められるのが大きな変化です. **Options:** - A (incorrect): HTTPのセマンティクス(=methodやstatus codeの意味づけ)はRFC 9110で定義され, HTTP/2で変わらない. - B (correct): これがtransport面での主要な変化. - C (incorrect): HTTP/2は通常TLS上で動くが, TLSを置き換えない. **Related:** ただし TCP 上なので, transport レイヤの head-of-line は残ります. そこが HTTP/3 / QUIC へ話がつながるポイントです.

Q2: HTTP/2のwire上の基本単位はどれ

Multiple Choice
**Explanation:** **Terms:** frame, binary framing layer. HTTP/2はframeの列として通信し, frame headerで種別や長さを表す. **Correct (C):** frameがheaders, data, settingsなどを運ぶ. **Options:** - A (incorrect): それはHTTP/1.1. - B (incorrect): chunkedはHTTP/1.1の転送方式. - C (correct): HTTP/2はbinary frame. **Related:** HTTPのセマンティクスは同じでも, framing layerが違うと実装の落とし穴が変わる.

Q3: HTTP/2のstream IDの奇偶ルールとして正しいのはどれ

Multiple Choice
**Explanation:** **Terms:** stream ID, initiator. stream IDは順序と開始者を示し, protocol error検出に役立つ. **Correct (A):** clientは奇数, serverは偶数を使う. **Options:** - A (correct): 定義通り. - B (incorrect): 逆. - C (incorrect): 奇偶は意味を持つ. **Related:** stream IDの単調増加も重要で, 再利用や不正frameを検出する.

Q4: HTTP/2 flow controlについて正しいものはどれ (複数選択)

Multi-Select
**Explanation:** **Terms:** flow control, window, DATA, WINDOW_UPDATE. flow controlは受信側が過負荷にならないよう, 送信をcreditで制限する仕組み. **Correct (A,C,D):** DATA向けのwindowがあり, stream単位とconnection全体の両方で管理される. windowを増やすのがWINDOW_UPDATE. **Options:** - A (correct): windowがDATA送信量を制御する. - B (incorrect): 主にDATAが対象で, headerは別の取り扱いになる. - C (correct): 2種類のwindowがある. - D (correct): WINDOW_UPDATEで増加. **Related:** window設定ミスはstallに見え, ネットワーク障害と誤診しやすい.

Q5: SETTINGS frameの目的はどれ

Multiple Choice
**Explanation:** **Terms:** SETTINGS, connection parameters. frame sizeやconcurrent streamsなどの上限や好みを共有する. **Correct (B):** SETTINGSはcontrolとしてconnectionを調整する. **Options:** - A (incorrect): payloadはDATA. - B (correct): 設定通知. - C (incorrect): ackは別の仕組み. **Related:** SETTINGSの未尊重はprotocol errorになり得る. 受信側はackする必要がある.

Q6: HTTP/2 connectionのgraceful shutdownを示すframe名はどれ

Short Text
**Explanation:** **Terms:** GOAWAY. GOAWAYは新規streamを受け付けないことと, 処理済みのlast streamを通知する. **Correct:** GOAWAY. **Why others are wrong:** RST_STREAMは1つのstreamだけをresetする. SETTINGSは設定通知でshutdownではない. **Related:** 未処理stream上のrequestは, methodのidempotencyを考慮してretry判断する.