<p><!-- style_prompt: advanced_commentary_v1 -->
本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h1 class="wp-block-heading">令和5年度 春期 ネットワークスペシャリスト 午前Ⅱ 問14 HTTP/2の特徴</h1>
<p>HTTP/1.1の低遅延化における限界と、それを解決するHTTP/2のマルチプレクシング(多重化)やヘッダー圧縮の仕組みを問う問題です。</p>
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>【問題】
HTTP/1.1と比べた場合のHTTP/2の特徴に関する記述として、適切なものはどれか。</p>
<p>ア 1本のTCPコネクション上で複数のリクエストとレスポンスを並列にやり取りする機能がある。
イ ASCII形式のテキストベースのプロトコルであり、デバッグが容易である。
ウ サーバ側からクライアントに対して、リクエストがない情報を送信する機能(サーバプッシュ)は廃止された。
エ ヘッダー情報を圧縮する機能はなく、各リクエストで同じヘッダーを繰り返し送信する。</p>
</blockquote>
<p>【解説】
HTTP/2は、Web表示の高速化を目的として、Googleが開発したSPDYプロトコルをベースに標準化されました。HTTP/1.1では、1つのリクエストが完了するまで次のリクエストを送れない「Head-of-Line Blocking(HOLブロッキング)」が課題でした。</p>
<p>HTTP/2では、物理的な1本のTCPコネクションの中に「ストリーム」という論理的なチャネルを複数形成します。これにより、複数のリクエストとレスポンスを並列に処理する「マルチプレクシング(多重化)」を実現しています。</p>
<p>$$ \text{伝送効率} \propto \frac{\text{多重ストリーム数}}{\text{RTT(往復遅延時間)}} $$</p>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
graph TD
subgraph HTTP_1_1
A[Client] -- Req1 --> B[Server]
B -- Res1 --> A
A -- Req2 --> B
B -- Res2 --> A
end
subgraph HTTP_2
C[Client] -- Stream1: Req1 --> D[Server]
C -- Stream2: Req2 --> D
D -- Stream1: Res1 --> C
D -- Stream2: Res2 --> C
end
</pre></div>
<p>【選択肢の吟味】</p>
<figure class="wp-block-table"><table>
<thead>
<tr>
<th style="text-align:left;">選択肢</th>
<th style="text-align:left;">判定</th>
<th style="text-align:left;">解説</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;">ア</td>
<td style="text-align:left;"><strong>正解</strong></td>
<td style="text-align:left;">HTTP/2の最大の特徴であるマルチプレクシング(ストリームによる多重化)の説明です。</td>
</tr>
<tr>
<td style="text-align:left;">イ</td>
<td style="text-align:left;">誤り</td>
<td style="text-align:left;">HTTP/1.1はテキストベースですが、HTTP/2はバイナリベースのプロトコルであり、効率性を重視しています。</td>
</tr>
<tr>
<td style="text-align:left;">ウ</td>
<td style="text-align:left;">誤り</td>
<td style="text-align:left;">サーバプッシュはHTTP/2で新たに導入された機能です(ただしHTTP/3等では運用上の理由で利用が限定的になっています)。</td>
</tr>
<tr>
<td style="text-align:left;">エ</td>
<td style="text-align:left;">誤り</td>
<td style="text-align:left;">HPACKというアルゴリズムを用いたヘッダー圧縮機能があり、冗長なデータの送信を抑制しています。</td>
</tr>
</tbody>
</table></figure>
<p>【ポイント】</p>
<ul class="wp-block-list">
<li><p><strong>マルチプレクシング</strong>:1つのTCPコネクションで複数のストリームを並列処理し、HOLブロッキングを解消。</p></li>
<li><p><strong>バイナリプロトコル</strong>:テキスト形式からバイナリ形式に変更し、解析速度と通信効率を向上。</p></li>
<li><p><strong>HPACK圧縮</strong>:重複するヘッダー情報をインデックス化して送信データ量を削減。</p></li>
</ul>
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証) です。
令和5年度 春期 ネットワークスペシャリスト 午前Ⅱ 問14 HTTP/2の特徴
HTTP/1.1の低遅延化における限界と、それを解決するHTTP/2のマルチプレクシング(多重化)やヘッダー圧縮の仕組みを問う問題です。
【問題】
HTTP/1.1と比べた場合のHTTP/2の特徴に関する記述として、適切なものはどれか。
ア 1本のTCPコネクション上で複数のリクエストとレスポンスを並列にやり取りする機能がある。
イ ASCII形式のテキストベースのプロトコルであり、デバッグが容易である。
ウ サーバ側からクライアントに対して、リクエストがない情報を送信する機能(サーバプッシュ)は廃止された。
エ ヘッダー情報を圧縮する機能はなく、各リクエストで同じヘッダーを繰り返し送信する。
【解説】
HTTP/2は、Web表示の高速化を目的として、Googleが開発したSPDYプロトコルをベースに標準化されました。HTTP/1.1では、1つのリクエストが完了するまで次のリクエストを送れない「Head-of-Line Blocking(HOLブロッキング)」が課題でした。
HTTP/2では、物理的な1本のTCPコネクションの中に「ストリーム」という論理的なチャネルを複数形成します。これにより、複数のリクエストとレスポンスを並列に処理する「マルチプレクシング(多重化)」を実現しています。
$$ \text{伝送効率} \propto \frac{\text{多重ストリーム数}}{\text{RTT(往復遅延時間)}} $$
graph TD
subgraph HTTP_1_1
A[Client] -- Req1 --> B[Server]
B -- Res1 --> A
A -- Req2 --> B
B -- Res2 --> A
end
subgraph HTTP_2
C[Client] -- Stream1: Req1 --> D[Server]
C -- Stream2: Req2 --> D
D -- Stream1: Res1 --> C
D -- Stream2: Res2 --> C
end
【選択肢の吟味】
選択肢
判定
解説
ア
正解
HTTP/2の最大の特徴であるマルチプレクシング(ストリームによる多重化)の説明です。
イ
誤り
HTTP/1.1はテキストベースですが、HTTP/2はバイナリベースのプロトコルであり、効率性を重視しています。
ウ
誤り
サーバプッシュはHTTP/2で新たに導入された機能です(ただしHTTP/3等では運用上の理由で利用が限定的になっています)。
エ
誤り
HPACKというアルゴリズムを用いたヘッダー圧縮機能があり、冗長なデータの送信を抑制しています。
【ポイント】
マルチプレクシング :1つのTCPコネクションで複数のストリームを並列処理し、HOLブロッキングを解消。
バイナリプロトコル :テキスト形式からバイナリ形式に変更し、解析速度と通信効率を向上。
HPACK圧縮 :重複するヘッダー情報をインデックス化して送信データ量を削減。
ライセンス :本記事のテキスト/コードは特記なき限り
CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。
コメント