令和3年度 春期 応用情報技術者試験 午後 問題 問5 旅行販売システムへのWebSocketによるチャット機能の追加

学習ガイド

既存の旅行販売システムに、販売店とコールセンタ間のチャット機能を追加するネットワーク問題です。NAPTやプロキシサーバを経由したアクセス経路の把握と、WebSocketを利用した双方向通信の実装方式、負荷分散の課題が問われます。複雑なネットワーク構成図から通信時のIPアドレスの変換過程を正確にたどり、HTTPの枠組みを利用してリアルタイム通信を実現するWebSocketの仕組みと制約を紐解きます。

この記事で押さえる論点

  • プロキシサーバやNAPTを用いたネットワークアクセスの仕組みとIPアドレスの変換を説明できる
  • WebSocketを利用した双方向通信の仕組みと、HTTPとの共通点を述べられる
  • 負荷分散装置を経由した通信におけるTCPコネクション維持の課題と、回避策を説明できる

問題本文

問5 チャット機能の開発に関する次の記述を読んで,設問1〜3に答えよ。

E社は,旅行商品の企画,運営,販売を行う旅行会社である。E社の旅行商品は,自社の販売店と販売代理会社の販売店を通じて販売している。販売店に顧客が来ると,販売スタッフがE社の旅行販売システムを利用して,顧客の要望に合う旅行商品を検索し,顧客に提案している。また,顧客からの旅行商品に関する質問の回答が分からない場合,E社の販売店向けコールセンタに電話で問い合わせることになっているが,販売店からは“コールセンタに電話が繋がらない”などの苦情が出ている。

そこでE社は,販売店とコールセンタのスタッフがテキストメッセージで相互にやり取りできるチャット機能を,旅行販売システムに追加することにした。チャット機能の開発は,E社システム部門のF君が担当することになった。

〔ネットワーク構成の調査〕

F君は,チャット機能を開発するに当たり,現在のネットワーク構成を調査した。図1にF君が調査したネットワーク構成(抜粋)を示す。

図1 F君が調査したネットワーク構成(抜粋)
図の説明テキスト

ネットワーク構成図。

【構成要素と接続】

  • 中央: 「広域イーサネット」の雲形アイコン

  • 左側:

    • 「E社販売店」枠: 内部に「PC」があり、右の「FW#2」に接続(線上にIP: 10.100.1.1)。FW#2から広域イーサネットへ接続(IP: 10.0.0.10)。
    • 「販売代理会社」枠: 内部に「本社」枠と「販売店」枠がある。
      • 「本社」枠内: 「プロキシサーバ」があり、右の「FW#3」に接続(線上にIP: 192.168.0.1, 192.168.0.2)。FW#3から広域イーサネットへ接続(IP: 10.1.1.2)。また、プロキシサーバの下に「店舗接続ルータ」があり接続(線上にIP: 192.168.0.3, 192.168.0.4)。
      • 「店舗接続ルータ」から下へ線が伸び、「販売店」枠内の「FW#4」に接続。
      • 「販売店」枠内: 「PC」があり右の「FW#4」に接続(線上にIP: 192.168.1.1)。FW#4の右側には接続線は描かれていない。
  • 右側:

    • 「E社データセンタ」枠:
      • 広域イーサネットから「FW#1」へ接続(FW#1 側の IP: 10.0.0.1)。
      • 「代理会社接続ルータ」: 上側は広域イーサネットと FW#1 を結ぶ線に接続(IP: 10.0.0.2)、下側は広域イーサネットに接続(IP: 10.1.1.1)。
      • 「FW#1」の下側(IP: 10.10.0.1)から下へネットワーク線が伸び、次の4台が同じ線に接続:
        • 「DNSサーバ」(IP: 10.10.0.2)
        • 「旅行販売システム」枠内の「負荷分散装置」(IP: 10.10.0.10)、「APサーバ#1」(IP: 10.10.0.11)、「APサーバ#2」(IP: 10.10.0.12)

【注記】
FW: ファイアウォール
APサーバ: アプリケーションサーバ

旅行販売システムは,2台のAPサーバと負荷分散装置から構成されている。負荷分散装置はAPサーバの負荷を分散させるために利用される。DNSサーバのAレコードには,旅行販売システムのIPアドレスとしてaが登録されている。

販売代理会社の販売店のPCから旅行販売システムへの通信は,FW,ルータ,プロキシサーバを経由している。FW#3では,NAPTを行い,宛先ポートが53番ポート,80番ポート又は443番ポートで宛先ネットワークアドレスが10.10.0.0のIPパケットとその返信IPパケットだけを通信許可する設定となっている。

販売代理会社の販売店のPCがHTTPを利用して旅行販売システムにアクセスする場合,プロキシサーバはPCから受信したGETメソッドを参照して,APサーバへHTTPリクエストを送信する。一方,HTTP Over TLSを利用する場合は,プロキシサーバは旅行販売システムの機器とTCPコネクションを確立し,①PCから受信したデータをそのまま送信する。

また,販売代理会社の販売店のPCから旅行販売システムへアクセスする場合,PCからFW#4に送信されるIPパケットの宛先IPアドレスはbとなり,代理会社接続ルータからFW#1に送信されるIPパケットの送信元IPアドレスはcとなる。

〔チャット機能の実装方式の検討〕

次にF君は,チャット機能の実装方式を検討した。チャット機能を実装する場合,旅行販売システムで利用している②HTTPでは実装が困難である。そこでF君は,チャット機能の実装のためにWebSocketについて調査を行った。図2にF君が調査したWebSocketを利用した通信(抜粋)を示す。

図2 F君が調査したWebSocketを利用した通信(抜粋)
図の説明テキスト

ノードとして「PC」と「APサーバ」が配置されたシーケンス図。
通信の流れ:

  1. PCからAPサーバへ送信:
    GET /chat
    Upgrade: websocket
    Connection: Upgrade
  2. APサーバからPCへ送信:
    HTTP/1.1 101 Switching Protocols
    Upgrade: websocket
    Connection: Upgrade
  3. PCからAPサーバへ送信: テキストメッセージ
  4. APサーバからPCへ送信: テキストメッセージ
  5. APサーバからPCへ送信: テキストメッセージ

下部に以下の注記がある:
「注記 図中の PC は,E社販売店の PC と販売代理会社の販売店の PC を指す。」

WebSocketを利用すると,PCとAPサーバの間のHTTPを用いた通信を拡張し,任意フォーマットのデータの双方向通信ができる。WebSocketを利用するためには,PCからAPサーバにHTTPと同様のGETメソッドを送信する。このGETメソッドのHTTPヘッダに“Upgrade: websocket”と“Connection: Upgrade”を含めることで,PCとAPサーバの間でWebSocketの接続が確立する。接続が確立したら,PCとAPサーバのどちらからでも,テキストメッセージを送信できる。

この調査結果からF君は,IRC(Internet Relay Chat)プロトコルや新たにチャット機能専用のプロトコルを利用する場合と比較し,③WebSocketを利用することで販売代理会社のFWやルータの設定変更を少なくできると考えた。

〔チャット機能の設計レビュー〕

F君は,APサーバにチャット機能を追加するための設計を行い,上司のG課長のレビューを受けた。レビューの結果,G課長から次の2点の指摘があった。

  • 指摘1.WebSocketはTCPコネクションを確立したままにするので,負荷分散装置を経由してチャット機能へアクセスすると,旅行販売システムの既存機能へのアクセスに影響がある。
  • 指摘2.チャット機能をWebSocket Over TLSに対応させないと,販売代理会社からプロキシサーバを経由してチャット機能にアクセスできない。

F君は指摘1について,チャット機能では負荷分散装置を使わないことにし,E社データセンタ内にある機器を利用した④ほかの負荷分散方式に変更した。
次に指摘2について,WebSocketを利用した通信ではTCPコネクションを確立したままにする必要があるので,プロキシサーバのHTTP Over TLSのデータをそのまま送信する機能を利用することで,プロキシサーバ経由でチャット機能が利用できる。そこで,F君はTLS証明書をdにインストールし,チャット機能の通信をHTTP Over TLSに対応させた。

その後F君が,チャット機能を旅行販売システムに追加したことで,販売店でのチャット機能の利用が開始された。

設問と解答・解説

設問1

〔ネットワーク構成の調査〕について,(1)〜(3)に答えよ。

(1)配点 3点

本文中の a に入れる適切なIPアドレスを図1中の字句を用いて答えよ。

模範解答

10.10.0.10

採点基準

正確性(内容)3点
  • 3点: 「10.10.0.10」と解答している。
  • 1点: IPアドレスの形式で解答しているが、値が誤っている。
  • 0点: 無解答、またはIPアドレスの形式ではない。

解説

  • DNSサーバ の Aレコード には、ホスト名に対応するIPアドレスを登録する。
  • 図1のネットワーク構成において、広域イーサネットから「旅行販売システム」へのアクセスは、まず 負荷分散装置 が受け付ける構成となっている。
  • 複数のAPサーバへのアクセスを振り分けるため、クライアントから見た旅行販売システムの宛先IPアドレスは負荷分散装置のIPアドレスとなる。
  • したがって、DNSサーバに登録される旅行販売システムのIPアドレスは、負荷分散装置の 10.10.0.10 となる。

高得点のポイント

  • 図1の構成から、「旅行販売システム」の外部からの入り口となる機器(負荷分散装置)を特定できていること。
  • 該当する機器のIPアドレスを正確に読み取り、誤りなく記述すること。
(2)配点 3点

本文中の b に入れる適切なIPアドレスを図1中の字句を用いて答えよ。

模範解答

192.168.0.3

採点基準

正確性(内容)3点
  • 3点: 「192.168.0.3」と解答している。
  • 1点: IPアドレスの形式で解答しているが、値が誤っている。
  • 0点: 無解答、またはIPアドレスの形式ではない。

解説

  • 販売代理会社の販売店のPCから旅行販売システムへのアクセスは、プロキシサーバ を経由するように設定されている。
  • PCがプロキシサーバを利用して通信する場合、PCが送信するIPパケットの 宛先IPアドレス は、本来の目的地のサーバではなく プロキシサーバのIPアドレス となる。
  • 図1の「販売代理会社」内のネットワーク構成を見ると、PC(192.168.1.1)からFW#4、店舗接続ルータを経由してプロキシサーバへ到達する。この経路上にあるプロキシサーバのインターフェース側のIPアドレスは 192.168.0.3 である。

高得点のポイント

  • プロキシサーバを経由する通信において、PCからのパケットの宛先IPアドレスがプロキシサーバになることを理解していること。
  • 図1から、PC側のネットワークからアクセスするプロキシサーバのIPアドレス(192.168.0.3)を正確に読み取ること。
(3)配点 3点

本文中の c に入れる適切なIPアドレスを図1中の字句を用いて答えよ。

模範解答

10.1.1.2

採点基準

正確性(内容)3点
  • 3点: 「10.1.1.2」と解答している。
  • 1点: IPアドレスの形式で解答しているが、値が誤っている。
  • 0点: 無解答、またはIPアドレスの形式ではない。

解説

  • 販売代理会社のPCから送信された通信はプロキシサーバを経由し、FW#3 を通って広域イーサネットへ抜け、代理会社接続ルータからFW#1へと向かう。
  • 本文の記述より、FW#3では NAPT (Network Address Port Translation)が行われる。これにより、LAN側から送信されたパケットの送信元IPアドレスは、FW#3の外部(広域イーサネット)側のIPアドレスに変換される。
  • 図1より、FW#3の広域イーサネット側のIPアドレスは 10.1.1.2 である。
  • 代理会社接続ルータはルータとしての転送処理のみを行い、送信元IPアドレスの変換は行わない。そのため、FW#1に送信される際のパケットの送信元IPアドレスは 10.1.1.2 のままとなる。

高得点のポイント

  • FW#3でNAPTが行われることにより、送信元IPアドレスがFW#3の外部インターフェースのIPアドレスに書き換えられることを理解していること。
  • 広域イーサネット上の他のルータ(代理会社接続ルータ)を経由しても、送信元IPアドレスは変化しないことを把握できていること。
(4)配点 1点

E社販売店のPC及び販売代理会社の販売店のPCが旅行販売システムにアクセスするためには,どの機器のDNS設定にE社のDNSサーバのIPアドレスを設定する必要があるか,解答群の中から全て選び,記号で答えよ。

ア. E社販売店のPC
イ. FW#1
ウ. FW#2
エ. FW#3
オ. FW#4
カ. 店舗接続ルータ
キ. 販売代理会社の販売店のPC
ク. 負荷分散装置
ケ. プロキシサーバ

模範解答

選択肢ア: E社販売店のPC

選択肢ケ: プロキシサーバ

解説

  • DNS設定 は、通信先ホスト名の名前解決(IPアドレスの取得)を行うために参照するDNSサーバを指定する設定である。
  • E社販売店のPC は、FW#2と広域イーサネットを経由して直接旅行販売システムへアクセスするため、自身で名前解決を行う必要があり、PCのDNS設定にE社のDNSサーバを設定する必要がある。
  • 一方、販売代理会社の販売店のPC はプロキシサーバを経由してアクセスする。ブラウザ等でプロキシを利用する際、PCからプロキシサーバへのリクエストにホスト名が含まれ、実際の名前解決は プロキシサーバ が代理で行う。
  • したがって、販売代理会社のPC自身ではなく、プロキシサーバのDNS設定にE社のDNSサーバを設定する必要がある。

各選択肢の解説

  • ア (E社販売店のPC): 正解。直接アクセスするため自身で名前解決を行う必要がある。
  • イ〜オ (各FW): ファイアウォールはパケットフィルタリングやNATなどを行う機器であり、今回の旅行販売システムへのアクセスにおいて自ら名前解決を行う役割は持たないため誤り。
  • カ (店舗接続ルータ): ルータはパケットのルーティングを行う機器であり、名前解決の主体ではないため誤り。
  • キ (販売代理会社の販売店のPC): プロキシサーバを利用するため、名前解決はプロキシサーバに任せることになり、自身に設定する必要はないため誤り。
  • ク (負荷分散装置): 外部からのリクエストを各サーバへ振り分ける役割であり、DNSへの問い合わせ元ではないため誤り。
  • ケ (プロキシサーバ): 正解。PCからの要求を代理で処理する際に名前解決を行う必要がある。
(5)配点 2点

本文中の下線①について,プロキシサーバがPCから送信されたデータをそのまま送信するのはなぜか,30字以内で述べよ。

模範解答

プロキシサーバはGETメソッドの内容が見えないから

採点基準

知識・理解度(内容)1点
  • 1点: 「内容が見えない」「暗号化されているため読み取れない」といった趣旨が含まれている。
  • 0点: 通信内容が読み取れないことへの言及がない。
論理性(構造)1点
  • 1点: 内容が見えないことを理由として、「〜だから」「〜ため」と適切に結んでいる。
  • 0点: 理由として論理が破綻している、または文末が適切でない。

解説

  • HTTP Over TLS(HTTPS)を利用した通信では、PCと最終的なアクセス先(旅行販売システム)との間で エンドツーエンドの暗号化 が行われる。
  • この際、プロキシサーバはPCからの接続要求を受け、TCPコネクションを確立・中継する役割のみを果たす。通信データの中身はTLSによって暗号化されている。
  • そのため、プロキシサーバは暗号化された GETメソッド などのHTTPリクエストの内容を復号して読み取ることができず、データをそのまま中継(送信)するしかない。

高得点のポイント

  • TLSによる通信が 暗号化 されており、プロキシサーバから 内容が見えない ことを指摘できていること。
  • 何の内容が見えないのか(GETメソッドやHTTPリクエスト)を明確にし、文字数制限(30字以内)の中で簡潔に理由をまとめていること。

設問2

〔チャット機能の実装方式の検討〕について,(1),(2)に答えよ。

(1)配点 1点

本文中の下線②について,チャット機能をHTTPで実装するのはなぜ困難か,解答群の中から選び,記号で答えよ。

ア. PCはAPサーバ上のファイルを取得することしかできないから
イ. PCへのメッセージ送信はAPサーバ側で発生したイベントを契機として行うことができないから
ウ. TCPコネクションを確立したままにできないから
エ. どのPCから送られたメッセージか,APサーバが判別できないから

模範解答

選択肢イ: PCへのメッセージ送信はAPサーバ側で発生したイベントを契機として行うことができないから

解説

  • HTTPはクライアント(PC)からの リクエスト に対してサーバが レスポンス を返すという仕様であり、常にクライアント側から通信が開始されるプル型のプロトコルである。
  • チャット機能においては、あるPCがメッセージを送信した際、それを受信したAPサーバが、接続している他のPCに対して自発的・リアルタイムにメッセージを プッシュ送信 する必要がある。
  • しかし、HTTPの仕組み上、APサーバ側で発生したメッセージ受信などの イベントを契機として クライアントへ通信を開始することができないため、チャット機能の実装が困難となる。

各選択肢の解説

  • ア: HTTPではPOSTメソッド等を利用してPCからAPサーバへデータを送信することも可能であるため誤り。
  • イ: 正解。HTTPはクライアント起点のプロトコルであり、サーバ主導でのプッシュ送信ができないため。
  • ウ: HTTP/1.1の Keep-Alive 機能などを利用すればTCPコネクションを維持することは可能であるため誤り。
  • エ: Cookieやセッション管理機能などを利用すれば、APサーバは送信元のPC(ユーザー)を判別可能であるため誤り。
(2)配点 2点

本文中の下線③について,FWやルータへの設定変更を少なくできるのはなぜか,WebSocketとHTTPの共通点に着目して,20字以内で述べよ。

模範解答

同じポートを利用するから

採点基準

知識・理解度(内容)1点
  • 1点: 「同じポートを利用する」「ポート番号が共通」といったキーワードが含まれている。
  • 0点: ポートに関する言及がない、または誤っている。
論理性(構造)1点
  • 1点: 「〜を利用するから」「〜が同じため」など、理由として適切に結ばれている。
  • 0点: 理由として論理が破綻している、または不自然である。

解説

  • 図2のシーケンス図にあるように、WebSocket は初期接続時にHTTPの GET メソッドを使用し、ヘッダに Upgrade: websocket を含めることでプロトコルを切り替える仕組みである。
  • この通信の確立はHTTP(またはHTTPS)のプロトコル上で行われるため、WebSocketはHTTPと同じ 80番ポート や、HTTPSと同じ 443番ポート を利用する。
  • FW#3は「宛先ポートが53番ポート,80番ポート又は443番ポートで宛先ネットワークアドレスが10.10.0.0のIPパケットとその返信IPパケットだけを通信許可する」設定になっている。WebSocketは既存のHTTP/HTTPSと 同じポートを利用する ため、ファイアウォール(FW)やルータに新たなポートを許可する設定を追加する必要がない。

高得点のポイント

  • WebSocketとHTTPの共通点として、利用する ポート(ポート番号)が同じである ことに言及できていること。
  • 文字数制限(20字以内)の中で過不足なく簡潔に表現できていること。

設問2(2)は,正答率がやや低かった。ファイアウォールやルータが許可する通信プロトコルを制限してセキュリティを確保する際に,通信プロトコルで利用するポート番号を用いる場合があることを知っておいてほしい。

設問3

〔チャット機能の設計レビュー〕について,(1),(2)に答えよ。

(1)配点 2点

本文中の下線④について,どのような負荷分散方式に変更したか,20字以内で答えよ。

模範解答

DNSラウンドロビン方式

採点基準

知識・理解度(内容)1点
  • 1点: 「DNS」というキーワードが含まれている。
  • 0点: 「DNS」が含まれていない。
論理性(構造)1点
  • 1点: 「ラウンドロビン方式」といった具体的な手法名が含まれ、適切な名称として記述されている。
  • 0点: 手法名が不正確、または記述されていない。

解説

  • 指摘1への対策として、「負荷分散装置を使わない」ようにしつつ、「E社データセンタ内にある機器」を利用して負荷を分散させる構成に変更された。
  • 図1のE社データセンタ内には、負荷分散に利用可能な既存機器として DNSサーバ が存在する。
  • DNSサーバに1つのホスト名(旅行販売システム)に対して複数のIPアドレス(APサーバ#1とAPサーバ#2)を登録し、問い合わせがあるごとに順番に異なるIPアドレスを回答してアクセスを振り分ける手法を DNSラウンドロビン方式 と呼ぶ。

高得点のポイント

  • 負荷分散装置の代替として、DNSを活用した方式であることを理解していること。
  • 具体的な手法名である DNSラウンドロビン方式 を正確に記述できていること。
(2)配点 3点

本文中の d に入れる適切な機器名を,図1中の字句を用いて全て答えよ。

模範解答

APサーバ#1,APサーバ#2

採点基準

正確性(内容)3点
  • 3点: 「APサーバ#1」と「APサーバ#2」の両方を解答している。
  • 1点: 「APサーバ#1」のみ、または「APサーバ#2」のみ解答している。
  • 0点: 無解答、または全く異なる機器名を解答している。

解説

  • 指摘2に基づき、チャット機能をHTTP Over TLS(WebSocket Over TLS)に対応させる必要がある。
  • 負荷分散装置を使わない構成(DNSラウンドロビン方式)に変更したため、PC(またはプロキシサーバ)は図1の APサーバ#1 および APサーバ#2 と直接TCPコネクションを確立する。
  • TLS通信を行うためには、TCPコネクションの終端となる機器に TLS証明書 をインストールし、暗号化・復号処理を行う必要がある。
  • チャット機能を提供する実体であり、通信の終端となる APサーバ#1 と APサーバ#2 の両方にTLS証明書をインストールしなければならない。

高得点のポイント

  • 負荷分散装置が除外されたことで、TLS通信の終端がAPサーバに変わったことを論理的に導き出せていること。
  • 通信先となる APサーバ#1 と APサーバ#2 の両方を漏れなく解答できていること。

設問3(2)は,正答率が低かった。DNSラウンドロビン方式の負荷分散を用いる場合に,TLS証明書をインストールする機器を問うたが,ルータやプロキシサーバという解答が散見された。HTTPの暗号化に広く利用されているTLSについては,TLS証明書をインストールする機器の違いによって通信の暗号化範囲が異なる点を理解してほしい。

Spineチーム