ネットワークスペシャリストの令和5年度 春季試験 午後Ⅰ 問1の解説を行っていきます。
出題テーマ:HTTP/2・TLS
出題テーマとしては『HTTP/2・TLS』でした。
HTTP/2およびTLSに関する基本的な知識が必要となる問題が出題されていました。
これらの知識がないと解答することが難しかった問題だったと思います。
設問1
ネットワークスペシャリストではこのように最初の問題で穴埋め問題が出題されます。
今回は全部で6問ありますのでこのうち3問以上、半分以上解答することができなければ、この問題を解くにあたっての知識が不足していることが多いです。
というように穴埋め問題をこの問題を選択するかどうかの指標とすると良いかと思います。
【a】について考えていきます。
【a】の部分として、『APサーバの動的コンテンツは、Webサーバで中継して配信される。この中継処理の仕組みを【a】プロキシと呼ぶ。』とあります。
通常のプロキシ、フォーワードプロキシは、クライアントからのWebサイトへアクセスしたいというリクエストを代理でWebサーバへ送信を行います。
今回の問題のように、リクエストを代理で受信して、そのリクエストをWeb(AP)サーバへ送信するプロキシのことを『a:リバース』プロキシと呼びます。
【b】について考えていきます。
【b】の部分として、『DMZのDNSサーバは、G社のサービス公開用ドメインに対する【b】DNSサーバであると同時に』とあります。
このようにドメインを管理するDNSサーバを『b:権威』DNSサーバと呼びます。
【c】について考えていきます。
【c】の部分として、『サーバセグメントのサーバがインターネットにアクセスするときに名前解決要求に応答する【c】DNSサーバ』とあります。
このようにインターネットへアクセスする際など、名前解決要求が行われるDNSサーバを『c:キャッシュ』DNSサーバと呼びます。
【d】について考えていきます。
【d】の部分として、『HTTP/2では、TCPコネクション内で複数のリクエストとレスポンスのやり取りを【d】と呼ばれる仮想的な通信路で多重化している。』とあります。
解答としては、『d:ストリーム』となります。
【e】について考えていきます。
【e】の部分として、『ヘッダー圧縮:HPACKと呼ばれるアルゴリズムによって、HTTPヘッダー情報がバイナリフォーマットに圧縮されている。ヘッダーフィールドには、【e】,:scheme,:pathといった必須フィールドがある。』とあります。
ヘッダー圧縮:HPACKにおける必須フィールドは『:method、:scheme、:path』ですので、解答としては『e: :method』となります。
【f】について考えていきます。
【f】の部分として、『一般的にはHTTP/2は、HTTP/1.1と同じく、”https://”のURIスキームが用いられる。そのため、通信開始処理において【f】プロトコルの拡張の一つであるALPN(Application-Layer Protocol Negotiation)を利用する。』とあります。
ALPNはTLSの拡張ですので、『f:TLS』となります。
設問2 (1)
下線①として、『HTTPパイプラインは、複数のリクエストが送られた場合にサーバが返すべきレスポンスの順序に成約がある』とあります。
HTTPパイプラインは問題文中に記載があり、『通信の多重化:HTTP/1.1には、同一のTCPコネクション内で通信を多重化する方式としてHTTPパイプライン』とあります。
HTTPパイプラインにはサーバがリクエストを受信した順番でレスポンスを行うという制約があります。
ということで解答例は、『サーバがリクエストを受信した順番でレスポンスを行う必要がある。(31文字)』となります。
HTTPパイプラインはHTTP/1.1でのみサポートされています。
そして、サーバおよびクライアント側でHTTPパイプラインが有効となっている必要がありますが、最近のブラウザの多くではデフォルトでHTTPパイプラインが無効になっていたり、実装化されていなものもあります。
設問2 (2)
下線②として、『ALPN(Application-Layer Protocol Negotiation)を利用する。』とあります。
ALPNはアプリケーション層においてどのプロトコルを使用するか決めるため機能です。
ALPNはサーバとの通信においてHTTP/1.0、HTTP/1.1、HTTP/2などのプロトコル、どれを用いるかを決めます。
クライアントはClient Helloの際に使用できるプロトコルを提示し、サーバ側がその中から使用するプロトコルを決めてSever Helloで返答します。
というこで解答例としては、『アプリケーション層において使用するプロトコルを決める目的(28文字)』となります。
設問3 (1)
下線③として、『HTTP/2の通信を開始するときに、ALPNを用いてクライアントとサーバとの間でネゴシエーションを行う。』とあります。
先程の設問2 (2)で解説をしましたが、ALPNはClient HelloとServer Helloでネゴシエーションを行いますので、解答は『(d)、(e)』となります。
設問3 (2)
こちらも先程解説をしましたが、クライアントはClient Helloの際に、自身が使用できるアプリケーション層のプロトコルを提示します。
ということで解答例としては、『クライアントが使用できるアプリケーション層のプロトコル(27文字)』となります。
設問4 (1)
【ア】から考えていきます。
重要な部分としては、『G社用VPCセグメントでは、IPアドレスとして、172.21.10.0/24を用いる。』とあります。
また、『G社VPCセグメントの仮想ルータとG社データセンターのL3SWとの間を、J社が提供する専用線接続サービスを利用して接続する。専用線の接続のIPアドレスとして、172.21.11.0/24を用い、L3SWのIPアドレスを172.21.11.1とし、仮想ルータのIPアドレスを172.21.11.2とする。』とあります。
そして、『G社データセンターとJ社クラウドとの間で通信できるように、L3SW及び仮想ルータに表1の静的経路を設定する。』とあります。
【ア】にはL3SWに設定する静的経路の宛先ネットワークが入りますので、G社VPCセグメントと通信できるようにすべく、『ア:172.21.10/24』が入ります。
【イ】について考えていきます。
【イ】はネクストホップですので、専用線接続のIPアドレスの仮想ルータ宛を設定してあげればよいので、『イ:172.21.11.2』が入ります。
【ウ】について考えていきます。
【ウ】は仮想ルータに設定する宛先ネットワーク0.0.0.0/0のネクストホップですが、L3SWを設定してあげればよいので、『ウ:172.21.11.1』が入ります。
他の問題がHTTP/2やTLSに関する知識がないと解答することが難しかったことに対して、こちらは難易度調整を行っているかのような問題でした。
設問4 (2)
下線④としては、『Hさんは、今回のシステム構成の変更内容を考慮して仮想LBで設定すべき動作モードを決めた。』とあります。
LBの動作モードとしては、表2に記載があり、『アプリケーションモード:レイヤー7で動作して負荷分散処理を行う。』、『ネットワークモード:レイヤー4で動作して負荷分散処理を行う。』とあります。
重要な部分として、『Webブラウザからのリクエストを受信した仮想LBは、リクエストのURLに応じてAPサーバ又はWebサーバに振り分ける。』、『Webブラウザと仮想LBとの間の通信をHTTP/2とし、仮想LBとAPサーバ及びWebサーバとの間の通信をHTTP/1.1とする。』とあります。
HTTPはアプリケーション層、レイヤー7です。
URLの識別およびHTTP/2からHTTP/1.1への変換を行う必要がありますので、『動作モード:アプリケーションモード』で動作させる必要があります。
そして理由としては、『理由:URLの識別とHTTP/2からHTTP/1.1へ変換する必要があるから(35文字)』となります。
ネットワークモードでレイヤー4で動作させる場合は、HTTPなどのプロトコルまでは識別することができず、TCPやUDPレベルでの分散処理となり、交互(ラウンドロビン)で振り分けるなどしかできず、今回の要件を満たすことができません。
公式解答例との比較
私の解答と公式解答を比較してみました。
満点ではないにせよ、少なくとも7割~8割程度は取れているかと思います。
予想配点はあくまで予想ですので参考程度でお願いします。
出題テーマは『HTTP/2・TLS』でした。
HTTP/2は年々普及率が高まってきているので、今のうちに勉強しておくと今後実案件で何かいいことがあるかもしれません。
出題もされていましたが、HTTP/1.1のHTTPパイプラインではリクエストが送られてきた順番にレスポンスを返していましたが、HTTP/2のストリームではその制約がなくなっています。
これはユーザ側からすると早く処理が進むため嬉しいことではあります。
エンジニア目線ですと、パケットキャプチャで見ると順番がぐちゃぐちゃなので、トラブルシューティングなどの際には少し大変だったりもします。。
難易度としては普通~やや難しい程度だったと思います。
配点 |
|||
設問1 | a:リバース b:権威 c:キャッシュ d:ストリーム e: :method f:TLS |
a:リバース b:権威 c:キャッシュ d:ストリーム e: :method f:TLS |
|
設問2 (1) | サーバがリクエストを受信した順番でレスポンスを行う必要がある。(31文字) | リクエストを受けたのと同じ順序でレスポンスを返す必要がある。 | |
設問2 (2) | アプリケーション層において使用するプロトコルを決める目的(28文字) | 通信開始時にTCPの上位のプロトコルを決定するため | |
設問3 (1) | (d)、(e) | (d)、(e) | |
設問3 (2) | クライアントが使用できるアプリケーション層のプロトコル(27文字) | クライアントが利用可能なアプリケーション層のプロトコル | |
設問4 (1) | ア:172.21.10.0/24 イ:172.21.11.2 ウ:172.21.11.1 |
ア:172.21.10.0/24 イ:172.21.11.2 ウ:172.21.11.1 |
|
設問3 (1) | 動作モード:アプリケーションモード 理由: URLの識別とHTTP/2からHTTP/1.1へ変換する必要があるから(35文字) |
動作モード:アプリケーションモード 理由:HTTP/2リクエストをHTTP/1.1に変換して負荷分散するから |
7点 |
引用元
問題および解答例に関しては、独立行政法人 情報処理推進機構(IPA)より引用しています。
YouTube解説動画
鋭意作成中につき少々お待ち下さい。