<p>style_prompt本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h1 class="wp-block-heading">令和5年度 ネットワークスペシャリスト 午前Ⅱ 問1:HTTP/2の仕様</h1>
<p>HTTP/2における通信効率化の仕組み、特に一つのTCPコネクション上での複数リクエスト並列処理(ストリーム)の特性を問う問題です。</p>
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>【問題】
HTTP/2の仕様に関する記述のうち、適切なものはどれか。</p>
<p>ア 1本のTCPコネクション上で、複数のHTTPリクエスト/レスポンスを並行してやり取りする多重化をサポートしている。
イ HTTPリクエストごとにTCPコネクションを確立し、一つのTCPコネクションでは一つのHTTPリクエストだけを処理する。
ウ HTTPヘッダを圧縮する機能はなく、テキスト形式のまま転送する。
エ サーバからクライアントに対して、リクエストされていないリソースをプッシュ送信する機能は廃止された。</p>
</blockquote>
<p>【解説】
HTTP/2(RFC 7540)は、従来のHTTP/1.1で課題となっていた「ヘッドオブラインブロッキング(先頭リクエストの遅延が後続に影響する問題)」を解消し、Web表示を高速化するために策定されました。</p>
<p>最大の特徴は<strong>ストリーム</strong>という概念の導入です。一つのTCPコネクションの中に仮想的な双方向シーケンス(ストリーム)を複数生成し、データをフレーム単位に分割して送受信します。これにより、複数のリクエストを順序に関係なく並行して処理(多重化)することが可能になりました。</p>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
sequenceDiagram
participant Client
participant Server
Note over Client, Server: 1本のTCPコネクション
Client ->> Server: ストリーム1: GET /index.html
Client ->> Server: ストリーム3: GET /style.css
Server ->> Client: ストリーム1: DATA (index.htmlの一部)
Server ->> Client: ストリーム3: DATA (style.cssの全部)
Server ->> Client: ストリーム1: DATA (index.htmlの残り)
</pre></div>
<p>【選択肢の吟味】</p>
<figure class="wp-block-table"><table>
<thead>
<tr>
<th style="text-align:left;">選択肢</th>
<th style="text-align:center;">判定</th>
<th style="text-align:left;">解説</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;">ア</td>
<td style="text-align:center;"><strong>正解</strong></td>
<td style="text-align:left;">HTTP/2の「ストリームによる多重化」の定義通りです。</td>
</tr>
<tr>
<td style="text-align:left;">イ</td>
<td style="text-align:center;">不正解</td>
<td style="text-align:left;">これはHTTP/1.0以前の動作、またはHTTP/1.1の非効率な状態を指します。</td>
</tr>
<tr>
<td style="text-align:left;">ウ</td>
<td style="text-align:center;">不正解</td>
<td style="text-align:left;">HTTP/2では「HPACK」というアルゴリズムを用いたヘッダ圧縮が標準化されています。</td>
</tr>
<tr>
<td style="text-align:left;">エ</td>
<td style="text-align:center;">不正解</td>
<td style="text-align:left;">「サーバプッシュ」はHTTP/2の主要機能の一つです。※HTTP/3では制限的ですが存在します。</td>
</tr>
</tbody>
</table></figure>
<p>【ポイント】</p>
<ul class="wp-block-list">
<li><p><strong>ストリームによる多重化</strong>: 1つのTCPコネクションで複数リクエストを同時並行処理。</p></li>
<li><p><strong>バイナリフレーム化</strong>: テキストベースからバイナリ形式に変更し、解析効率を向上。</p></li>
<li><p><strong>HPACK</strong>: 重複するヘッダ情報を差分送信・圧縮してデータ量を削減。</p></li>
</ul>
style_prompt本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証) です。
令和5年度 ネットワークスペシャリスト 午前Ⅱ 問1:HTTP/2の仕様
HTTP/2における通信効率化の仕組み、特に一つのTCPコネクション上での複数リクエスト並列処理(ストリーム)の特性を問う問題です。
【問題】
HTTP/2の仕様に関する記述のうち、適切なものはどれか。
ア 1本のTCPコネクション上で、複数のHTTPリクエスト/レスポンスを並行してやり取りする多重化をサポートしている。
イ HTTPリクエストごとにTCPコネクションを確立し、一つのTCPコネクションでは一つのHTTPリクエストだけを処理する。
ウ HTTPヘッダを圧縮する機能はなく、テキスト形式のまま転送する。
エ サーバからクライアントに対して、リクエストされていないリソースをプッシュ送信する機能は廃止された。
【解説】
HTTP/2(RFC 7540)は、従来のHTTP/1.1で課題となっていた「ヘッドオブラインブロッキング(先頭リクエストの遅延が後続に影響する問題)」を解消し、Web表示を高速化するために策定されました。
最大の特徴はストリーム という概念の導入です。一つのTCPコネクションの中に仮想的な双方向シーケンス(ストリーム)を複数生成し、データをフレーム単位に分割して送受信します。これにより、複数のリクエストを順序に関係なく並行して処理(多重化)することが可能になりました。
sequenceDiagram
participant Client
participant Server
Note over Client, Server: 1本のTCPコネクション
Client ->> Server: ストリーム1: GET /index.html
Client ->> Server: ストリーム3: GET /style.css
Server ->> Client: ストリーム1: DATA (index.htmlの一部)
Server ->> Client: ストリーム3: DATA (style.cssの全部)
Server ->> Client: ストリーム1: DATA (index.htmlの残り)
【選択肢の吟味】
選択肢
判定
解説
ア
正解
HTTP/2の「ストリームによる多重化」の定義通りです。
イ
不正解
これはHTTP/1.0以前の動作、またはHTTP/1.1の非効率な状態を指します。
ウ
不正解
HTTP/2では「HPACK」というアルゴリズムを用いたヘッダ圧縮が標準化されています。
エ
不正解
「サーバプッシュ」はHTTP/2の主要機能の一つです。※HTTP/3では制限的ですが存在します。
【ポイント】
ストリームによる多重化 : 1つのTCPコネクションで複数リクエストを同時並行処理。
バイナリフレーム化 : テキストベースからバイナリ形式に変更し、解析効率を向上。
HPACK : 重複するヘッダ情報を差分送信・圧縮してデータ量を削減。
ライセンス :本記事のテキスト/コードは特記なき限り
CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。
コメント