【ネットワークスペシャリスト試験 令和5年度 春期 午後1 問1 No.2】
ネットワークスペシャリスト試験 令和5年度 春期 午後1 問1
【出典:ネットワークスペシャリスト試験 令和5年度 春期 午後1 問1(一部、加工あり)】
[HTTP/2の概要と特徴]
HTTP/2は、HTTP/1.1との互換性を保ちながら主に通信の効率化を目的とした拡張が行われている。Hさんが注目したHTTP/2の主な特徴を次に示す。
- 通信の多重化:HTTP/1.1には、同一のTCPコネクション内で通信を多重化する方式としてHTTPパイプラインがあるが、HTTP/2では、TCPコネクション内で複数のリクエストとレスポンスのやり取りをストリームと呼ばれる仮想的な通信路で多重化している。①HTTPパイプラインは、複数のリクエストが送られた場合にサーバが返すべきレスポンスの順序に制約があるが、HTTP/2ではその制約がない。
- ヘッダー圧縮:HPACKと呼ばれるアルゴリズムによって、HTTPヘッダー情報がバイナリフォーマットに圧縮されている。ヘッダーフィールドには、:method、:sheme、:pathといった必須フィールドがある。
- フロー制御:ストリームごとのフロー制御によって、一つのストリームがリソースを占有してしまうことを防止する。
- 互換性:HTTP/2は、HTTP/1.1と互換性が保たれるように設計されている。一般的にHTTP/2は、HTTP/1.1と同じく”https://”のURIスキームが用いられる。そのため、通信開始処理においてTLSプロトコルの拡張の一つである②ALPN(Application-Layer Protocol Negotiation)を利用する。
下線①について、複数のリクエストを受けたサーバは、それぞれのリクエストに対するレスポンスをどのような順序で返さなければならないか。35字以内で答えよ。:リクエストを受けたのと同じ順序でレスポンスを返す必要がある。
「①HTTPパイプラインは、複数のリクエストが送られた場合にサーバが返すべきレスポンスの順序に制約があるが、HTTP/2ではその制約がない。」
HTTPでは、PCのブラウザとWebサイトの間で複数のTCPコネクションを確立して通信していますが、このTCPコネクションの数はサーバ負荷などを考慮して数個に制限されています。
そしてHTTP/1.1では、同一のTCPコネクション内で通信を多重化する方式としてHTTPパイプライン機能を用い、複数のリクエストを送信する際に、前のレスポンスを待たずに次のリクエストを送信できます。
ただし、複数のリクエストを識別する仕組みがないためその順番を管理することができず、リクエストを受けたのと同じ順序でレスポンスを返す必要があります。
下線②について、ALPNを必要とする目的は何か。30字以内で答えよ。:通信開始時に、TCPの上位プロトコルを決定するため
「HTTP/2は、HTTP/1.1と互換性が保たれるように設計されている。一般的にHTTP/2は、HTTP/1.1と同じく”https://”のURIスキームが用いられる。そのため、通信開始処理においてTLSプロトコルの拡張の一つである②ALPN(Application-Layer Protocol Negotiation)を利用する。」
HTTP/2とHTTP/1.1は互換性が保たれますが、同じ”https://”を使用するのであれば、HTTP/2とHTTP/1.1のどちらを使うか決定する必要があります。
これをALPNを利用して、クライアントとサーバとの間でネゴシエーションを行うことで決定します。
ただし、ALPNはHTTPに特化したものではなく汎用的な機能であるため、TCPの上位プロトコルを決定する目的で使用されます。