ネットワークスペシャリスト 2010年 午後1 問01
Webプロキシシステムの改善に関する次の記述を読んで、設問1〜3に答えよ。
A社では半年前から、2台のプロキシサーバを用いたWebプロキシシステムを利用している。A社のネットワーク構成を、図1に示す。

プロキシ1はキャッシュとURLフィルタリング用のプロキシサーバ、プロキシ2はウイルスチェック用のプロキシサーバである。PC上のブラウザはプロキシ1へアクセスし、プロキシ1はプロキシ2へアクセスする。Webプロキシシステムのアクセス順序を、図2に示す。

PC上のブラウザには、アクセスするプロキシ1のIPアドレスを定義する必要がある。A社では、定義用のファイル(以下、proxy.pacという)のURLをPCに登録している。proxy.pacはプロキシ1に格納されており、その中にプロキシ1のIPアドレスが登録されている。一方、プロキシ1には、アクセスするプロキシ2のIPアドレスが登録されている。
最近、Webサイトの応答が極めて遅くなったり、止まったりするようになった。この問題は、すべてのPCで同時に発生し、数分後には自然に解消した。
この問題について、ネットワークとWebプロキシシステムを担当しているB君が、調査し改善することになった。
ログの解析から、問題が発生しているときには、プロキシ2が受け付けるTCPコネクション数が、設定の上限値まで増加していることが分かった。しかし、プロキシ1が受け付けるTCPコネクション数は上限値の半数以下であった。プロキシ1とプロキシ2の上限値は、ボトルネックとなるプロキシ2のサーバ性能から設計した値で、同一である。これらの事実から、プロキシ2の過負荷が応答性能に影響を与えていることは判明したものの、その原因は分からなかった。
〔通信プロトコルに関する調査〕
B君は、Webサイトの応答性能に関係する通信プロトコルを調査した。
HTTPクライアントとHTTPサーバ間の通信では、大量のデータを一方向に転送するバルクデータ転送と、比較的少量のデータを交互に転送する対話型データ転送とが混在している。このうち、ア の応答性能は、ラウンドトリップ時間の影響を受ける。ラウンドトリップ時間とは、TCPコネクションにおけるパケットの往復時間である。一方、イ の応答性能は、ラウンドトリップ時間のほかに、ボトルネックとなる中継路の帯域幅と、確認応答を待たずに送信できるデータ量である ウ によっても変化する。ラウンドトリップ時間が同じでも帯域幅を広げれば、応答性能は向上し続けると思われがちであるが、TCPの通信プロトコル上、実効転送速度は、“ ウ ÷ ラウンドトリップ時間” に抑えられる。
HTTP/1.0が公開されたころのHTTPの実装では、1組のリクエストとレスポンスごとに、TCPコネクションの確立と切断が行われていた。図3に、HTTPクライアントがGETリクエストを用いて、HTTPサーバからWebページの情報を取得する際の通信シーケンス例を示す。
図3において、利用者から見たHTTPサーバの応答時間(以下、TATという)は、t1~t9の総和となる。HTTPクライアントの処理に着目すると、TATは次の三つに分割できる。
・TCPコネクションの確立完了までの時間:t1 + エ
・TCPコネクションの確立完了から、ダウンロードの完了までの時間:オ
・ダウンロードの完了から、TCPコネクションの切断と情報の表示がともに完了するまでの時間:カ + t9
HTTP/1.1において定義されている“永続的接続(Persistent Connections)”を用いると、複数組のリクエストとレスポンスが同一のTCPコネクションの中で実行できる。これによって、通信オーバヘッドが削減される。
多くのHTTPクライアントはキャッシュをもっており、取得する情報がキャッシュにある場合、その情報の最終更新時刻を付与したGETリクエストを送信する。キャッシュの情報が最新である場合、HTTPサーバは“304 Not Modified”のレスポンスだけを返す。これによってTATが短縮される。図3のHTTPクライアントがキャッシュをもち、問合せの結果、キャッシュにある情報が最新であると確認できた場合、そのTATは、図3で示されているTATと比べて、キだけ短縮される。
HTTPクライアントは、“先読み機能”を実装している場合もある。先読み機能とは、参照中のWebページに含まれるリンク情報を用いて、利用者が次に読み込む可能性のある情報を先読みし、キャッシュに蓄積しておく機能である。
〔原因の究明と対策の実施〕
B君は、プロキシ2に関する通信データを調査した。その結果、特定のWebサイト(以下、Cサイトという)にアクセスするとき、プロキシ1からプロキシ2へのTCPコネクション確立要求が大量に発生することが分かった。プロキシ2とCサイト間のTCPコネクションは一つだけで、HTTP/1.1の永続的接続が使われていた。
B君は、プロキシ1の仕様を再確認した。プロキシ1では先読み機能が実装されていた。また、設定によってこの機能を無効にすることができたが、A社では無効の設定を行っていなかった。B君は、PC上のブラウザやプロキシ2の仕様も再確認した。これらに先読み機能は実装されていなかった。B君は、次のように考えた。
Cサイトは、ほかのWebサイトへのリンク情報が多いので、プロキシ1の先読み機能が大量のTCPコネクションを発生させたと考えられる。プロキシ1の先読み機能を無効にすれば、問題は防止できそうである。無効にする作業は容易である。しかし、先読み効果がなくなるので、通常時の応答性能が悪化する可能性も否定できない。先読み機能を有効にしたまま、プロキシサーバのアクセス順序を変更する対策も有望である。しかし、複数の作業を同時に行わなければならない。例えば、プロキシサーバのIPアドレスを入れ替え、PC側の設定を変えない場合、プロキシサーバのIPアドレスを入れ替える作業のほかに、(I)三つの変更作業が必要である。そのため、作業計画を作成し、変更作業を行う必要がある。また、この対策では、プロキシ2のボトルネックは解消しても、(II)別のボトルネックが発生する可能性がある。
最終的に、B君は、“対策として、プロキシサーバのアクセス順序を変更したい”と上司に報告した。その際、B君は、Cサイトへのアクセスによって発生するTCPコネクションについて、対策後の状態を図4に示し、この図を用いて対策の効果を説明した。
その後、B君の報告どおりに変更作業が行われ、問題は発生しなくなった。
設問1:〔通信プロトコルに関する調査〕について、(1)〜(3)に答えよ。
問題文を見る(1)本文中の ア 〜 ウ に入れる適切な字句を答えよ。
模範解答
ア:対話型データ転送
イ:バルクデータ転送
ウ:ウィンドウサイズ(Window Size)
解説
解答の論理構成
-
問題文の該当箇所を確認
【問題文引用】
「HTTPクライアントとHTTPサーバ間の通信では、大量のデータを一方向に転送するバルクデータ転送と、比較的少量のデータを交互に転送する対話型データ転送とが混在している。このうち、ア の応答性能は、ラウンドトリップ時間の影響を受ける。」
─ 少量データを“交互”にやり取りする場合、往復遅延が直接効くため ア=「対話型データ転送」 が妥当です。 -
バルク転送側の説明を確認
【問題文引用】
「一方、イ の応答性能は、ラウンドトリップ時間のほかに、ボトルネックとなる中継路の帯域幅と、確認応答を待たずに送信できるデータ量である ウ によっても変化する。」
─ 「大量のデータを一方向に転送する」特徴と帯域幅・ウィンドウサイズが効く特性は バルクデータ転送 なので イ=「バルクデータ転送」 となります。 -
ウィンドウサイズの位置づけ
【問題文引用】
「確認応答を待たずに送信できるデータ量である ウ によっても変化する。」
─ TCPで “ACKを待たずに送れる量” は ウィンドウサイズ(Window Size) そのものです。したがって ウ=「ウィンドウサイズ(Window Size)」 です。 -
まとめ
- ア:対話型データ転送
- イ:バルクデータ転送
- ウ:ウィンドウサイズ(Window Size)
誤りやすいポイント
- 「ラウンドトリップ時間=RTT」だけで決まるのはどちらか
⇒ 大量転送と勘違いしがちですが、少量を行き来させる対話型がRTTの影響をもろに受けます。 - ウィンドウサイズを“パケットサイズ”や“MTU”と混同
⇒ MTUは1パケットの最大長、Window Sizeは未確認データ全体の上限です。 - バルク転送=ダウンロードの実効速度は帯域幅だけと考える
⇒ RTTとWindow Sizeの比 が理論上限である点を見落としやすいです。
FAQ
Q: バルクデータ転送の代表例は何ですか?
A: FTPの大容量ファイル転送やOSの更新モジュールの一括ダウンロードなど、長時間にわたり一方向へ大量データを流し続ける通信が該当します。
A: FTPの大容量ファイル転送やOSの更新モジュールの一括ダウンロードなど、長時間にわたり一方向へ大量データを流し続ける通信が該当します。
Q: Window Sizeを上げれば必ず転送速度は向上しますか?
A: RTTが大きい経路では効果的ですが、受信側バッファや中継装置の制約が先に飽和すると速度向上は頭打ちになります。
A: RTTが大きい経路では効果的ですが、受信側バッファや中継装置の制約が先に飽和すると速度向上は頭打ちになります。
Q: RTTが小さい近距離ネットワークでの対話型通信の改善策は?
A: RTTが既に小さい場合はHTTP/2の多重化や圧縮、TLSセッション再利用などプロトコルレイヤで往復回数自体を減らす方が効果的です。
A: RTTが既に小さい場合はHTTP/2の多重化や圧縮、TLSセッション再利用などプロトコルレイヤで往復回数自体を減らす方が効果的です。
関連キーワード: ラウンドトリップ時間, TCP, ウィンドウサイズ, バルクデータ転送, 対話型データ転送
設問1:〔通信プロトコルに関する調査〕について、(1)〜(3)に答えよ。
問題文を見る(2)GETリクエストを図3中の①〜⑦の中から選べ。
模範解答
③
解説
解答の論理構成
- 問題文は「GETリクエストを図3中の①〜⑦の中から選べ」と指示しています。
- 図3の説明に「t4付近 クライアント→サーバ (ラベル無し:HTTPリクエスト)」とあります。ここがGETリクエストそのものです。
- 同じく図3には「丸数字(HTTPクライアントの送信データを示す)」と記載され、t4の位置に対応する丸数字が「③」です。
- したがって、GETリクエストは「③」と結論できます。
引用根拠
・「t4付近 クライアント→サーバ (ラベル無し:HTTPリクエスト)」
・「丸数字(HTTPクライアントの送信データを示す) … t4の位置:③」
・「t4付近 クライアント→サーバ (ラベル無し:HTTPリクエスト)」
・「丸数字(HTTPクライアントの送信データを示す) … t4の位置:③」
以上より、解答は【③】です。
誤りやすいポイント
- ①や②を選んでしまう
「SYN」や「ACK」はTCP三者ハンドシェイクの制御パケットであってHTTPレベルのGETではありません。 - ⑤を選んでしまう
⑤はサーバからクライアントへ返るレスポンスデータ側であり、方向が逆です。 - 「HTTP/1.1の永続的接続」を思い出し、複数リクエストと混同する
永続的接続でも最初のGETは必須ですが、本設問は単一通信例なのでシンプルに判定できます。
FAQ
Q: TCP三者ハンドシェイクとGETリクエストはどう見分ければよいですか?
A: 「SYN」「ACK」など三文字の制御フラグはTCP、その後にURLを含むパケットがHTTPでありGETです。図3ではt4の矢印が該当します。
A: 「SYN」「ACK」など三文字の制御フラグはTCP、その後にURLを含むパケットがHTTPでありGETです。図3ではt4の矢印が該当します。
Q: 永続的接続を使う場合、GETは図3と同じ位置にありますか?
A: 最初のコネクション確立後に最初のGETが来る点は同じです。追加のGETは同じコネクション上で続けて送られるため、そのときは三者ハンドシェイクは再発生しません。
A: 最初のコネクション確立後に最初のGETが来る点は同じです。追加のGETは同じコネクション上で続けて送られるため、そのときは三者ハンドシェイクは再発生しません。
Q: 図3の③がGETであることを覚えやすくするコツは?
A: 「3枚目でGET」と語呂合わせすると、①②がハンドシェイク、③でアプリ層という流れを整理できます。
A: 「3枚目でGET」と語呂合わせすると、①②がハンドシェイク、③でアプリ層という流れを整理できます。
関連キーワード: TCP三者ハンドシェイク, GETリクエスト, HTTPレスポンス, 永続的接続, キャッシュ制御
設問1:〔通信プロトコルに関する調査〕について、(1)〜(3)に答えよ。
問題文を見る模範解答
エ:t2
オ:t3 + t4 + t5
カ:t6 + t7 + t8
キ:t4 + t5
解説
解答の導き方
本問は図3の時刻区間t1〜t9の通信シーケンスを用いて各区間を特定する問題です。問題文に「図3において、利用者から見たHTTPサーバの応答時間(以下、TATという)は、t1~t9の総和となる。」とあるので、まず図3のメッセージと時刻の対応を確認します。
図3の主要メッセージ(左→右が時系列):
- t1:クライアント→サーバ 「SYN」
- t2:サーバ→クライアント 「SYN, ACK」
- t3:クライアント→サーバ 「ACK」
- t4:クライアント→サーバHTTPリクエスト
- t5:サーバ→クライアントHTTPレスポンス(データ転送)
- t6〜t9:TCP切断(FIN/ACKのやりとり)および最終 ACK
問題文はTATを次の三つに分割しています(原文の記述に従う):
- TCPコネクションの確立完了までの時間:t1 + エ
- TCPコネクションの確立完了から、ダウンロードの完了までの時間:オ
- ダウンロードの完了から、TCPコネクションの切断と情報の表示がともに完了するまでの時間:カ + t9
これらを図3の時系列に当てはめて考えます。
-
[エ](確立完了までの追加時間)
TCPの三者間ハンドシェイクはSYN(t1)→ SYN,ACK(t2)→ ACK(t3)で行われます。ここで本問の時間区分に合わせると、クライアント側が「コネクション確立完了と見なせる瞬間」はサーバからのSYN,ACKを受け取った時点、つまりt2終了時点と解釈します。なぜなら図3ではその直後にクライアント側のACK(t3)とHTTPリクエスト(t4)が続き、問題文の分割はt3を「確立完了以降(ダウンロードに含む)」としているからです。したがって エ:。 -
[オ](確立完了からダウンロード完了まで)
確立完了をt2終了時点とすると、その直後からダウンロード完了(サーバのレスポンス送信完了、t5終了)までに含まれるのは、クライアントのACK(t3)、クライアントのHTTPリクエスト送信時間(t4)、およびサーバのレスポンス送信時間(t5)です。したがって オ:。 -
[カ](ダウンロード完了から切断・表示完了までの先行分)
ダウンロード完了はt5終了時点で、その後のTCP切断のやりとりはt6(クライアントのFIN)、t7(サーバのACK)、t8(サーバのFIN)、t9(クライアントの最終ACK)です。問題文は「…までの時間:カ + t9」としてt9を別扱いにしているので、[カ] に入るのはt6 + t7 + t8です。したがって カ:。 -
[キ](キャッシュが最新であった場合の短縮量)
問題文ではクライアントがキャッシュを持ち、条件付きGET(最終更新時刻付きGET)を送るとあります。キャッシュが最新であればサーバは304 Not Modifiedを返し、フルデータのダウンロードが不要になります。図3の通常取得と比較して短縮されるのは、図3中でウェブページ取得に相当するリクエスト送信とレスポンス(ダウンロード)に要する時間、すなわちt4とt5の合計です。したがって キ:。
まとめ(各設問の答えを式で示す)
エ:
オ:
カ:
キ:
エ:
オ:
カ:
キ:
誤りやすいポイント
- 「TCP接続の確立完了 = クライアントがACKを送った時点(t3)」と誤解する点。問題文の時間分割では、クライアントがサーバのSYN,ACKを受け取った時点(t2終了)を基準にしており、t3は確立後の処理に含まれます。定義を問題文に合わせて取ることが重要です。
- t3(クライアントのACK)を無視してしまう点。t3は短い区間でも、問題の区分ではダウンロード開始側に含まれるため、オ の計算に含める必要があります。
- キャッシュによる短縮量(キ)を「t5だけ」と考えてしまう点。問題は「図3と比べて短縮される量」を問うており、図3での取得にかかるリクエスト+レスポンスの時間(t4 + t5)を基準にするのが正解です。
FAQ
Q: なぜ「確立完了」をSYN,ACK受信時点(t2終了)と定義してよいのですか?
A: 問題文がTATを三つに分割しており、その第1区分が「t1 + [エ]」と与えられているため、図3の時系列で区分を整合させると [エ] はt2になります。実務的にはクライアントがSYN,ACKを受け取ればアプリケーション層の送信準備が整うため、時間分割として合理的です。
A: 問題文がTATを三つに分割しており、その第1区分が「t1 + [エ]」と与えられているため、図3の時系列で区分を整合させると [エ] はt2になります。実務的にはクライアントがSYN,ACKを受け取ればアプリケーション層の送信準備が整うため、時間分割として合理的です。
Q: クライアントがACKにリクエストを同梱(piggyback)する実装の場合、どのように考えるべきですか?
A: 実装によっては第3ハンドシェイク(ACK)にデータを乗せて送るため、t3とt4が重なることがあります。本問は図3の区分に従う設問なので、図のメッセージ配置(t3の後にt4)に従って計算します。実務ではパケット解析で実際の送受信タイミングを確認します。
A: 実装によっては第3ハンドシェイク(ACK)にデータを乗せて送るため、t3とt4が重なることがあります。本問は図3の区分に従う設問なので、図のメッセージ配置(t3の後にt4)に従って計算します。実務ではパケット解析で実際の送受信タイミングを確認します。
Q: 304が返るケースで本当にt4 + t5が丸ごと短縮されるのですか?
A: 問題設定上は「図3の通常取得と比べて短縮される量」を問うており、通常取得に要したリクエストとレスポンスの時間を基準にしています。実際には条件付きGET自体や304応答にも小さいオーバーヘッドはありますが、本問では図3のt4(リクエスト)とt5(レスポンス)の合計を短縮量として扱います。
A: 問題設定上は「図3の通常取得と比べて短縮される量」を問うており、通常取得に要したリクエストとレスポンスの時間を基準にしています。実際には条件付きGET自体や304応答にも小さいオーバーヘッドはありますが、本問では図3のt4(リクエスト)とt5(レスポンス)の合計を短縮量として扱います。
関連キーワード: TCPハンドシェイク、ラウンドトリップ時間、ウィンドウサイズ、スループット、永続的接続
設問2:〔原因の究明と対策の実施〕について、(1)、(2)に答えよ。
問題文を見る(1)本文中の下線(Ⅰ)について、三つの変更作業をそれぞれ30字以内で具体的に述べよ。
模範解答
①:プロキシ1上のプロキシサーバの定義を削除する。
②:プロキシ2のプロキシサーバとしてプロキシ1を定義する。
③:proxy.pacをプロキシ1からプロキシ2に移す。
解説
解答の論理構成
-
課題の背景
- 既存構成は【問題文】の「図2」で示されるとおり「PC(ブラウザ) → プロキシ1 → プロキシ2 → Webサイト」で、PC側は「proxy.pacはプロキシ1に格納」され、さらに「プロキシ1には、アクセスするプロキシ2のIPアドレスが登録」されています。
- アクセス順序を逆転させるには、プロキシ2を最上流に、プロキシ1を下流に置き換える必要があります。
-
IPアドレス入れ替え後に残る三つの設定課題
- 【問題文】には「プロキシサーバのIPアドレスを入れ替え、PC側の設定を変えない場合、プロキシサーバのIPアドレスを入れ替える作業のほかに、(I)三つの変更作業が必要」とあります。
- PCから見た “proxy1のIPアドレス” は変わらないため、プロキシ2(ウイルスチェック用)がそのIPになる ⇒ プロキシ2に下流サーバ(旧プロキシ1)を設定する必要が生じます。
- 旧プロキシ1(キャッシュ/URLフィルタリング用)は上流サーバ設定を保持しているとループを生むため、削除が必要です。
- 「proxy.pacはプロキシ1に格納」とあるため、IP入れ替え後もブラウザが同じURLで取得できるよう、proxy.pacを新しい “proxy1 IP” 側(= プロキシ2)へ移設しなければなりません。
-
以上から導かれる三つの変更作業
① 旧プロキシ1の上流プロキシ設定を削除する(ループ防止)。
② プロキシ2に下流プロキシとして旧プロキシ1を登録する(新経路を形成)。
③ proxy.pacを旧プロキシ1からプロキシ2へ移し、PCが同じURLで取得できるようにする。 -
模範解答との一致
- 模範解答の
「①:プロキシ1上のプロキシサーバの定義を削除する。」
「②:プロキシ2のプロキシサーバとしてプロキシ1を定義する。」
「③:proxy.pacをプロキシ1からプロキシ2に移す。」
は、上記 ①〜③ と完全に対応しており、要件を満たします。
- 模範解答の
誤りやすいポイント
- 「proxy.pacのURLはPC側に静的に登録されている」点を見落とし、ファイル移設を忘れる。
- 旧プロキシ1の上流設定を残したままにしてしまい、プロキシ間で無限ループが発生する。
- 「プロキシサーバのIPアドレスを入れ替える」だけで経路が完成すると誤解し、プロキシ2に下流設定を入れ忘れる。
FAQ
Q: proxy.pacをコピーではなくリンクで参照してもよいですか?
A: 物理ファイルの所在をプロキシ2にする方が確実です。リンク設定はWebサーバ動作や権限の追加作業が増えるため、試験解答としては「移す」と記述するのが安全です。
A: 物理ファイルの所在をプロキシ2にする方が確実です。リンク設定はWebサーバ動作や権限の追加作業が増えるため、試験解答としては「移す」と記述するのが安全です。
Q: 旧プロキシ1の上流設定をコメントアウトするだけでも良いですか?
A: 動作上は問題ありませんが、試験では「削除する」と明確に示す方が意図が伝わりやすいです。
A: 動作上は問題ありませんが、試験では「削除する」と明確に示す方が意図が伝わりやすいです。
Q: ブラウザ設定をproxy.pac方式から直接IP指定方式に変える案は?
A: PC全台の設定変更が必要になり作業規模が大きくなるため、設問の前提である「PC側の設定を変えない」に反します。
A: PC全台の設定変更が必要になり作業規模が大きくなるため、設問の前提である「PC側の設定を変えない」に反します。
関連キーワード: HTTP/1.1, 永続的接続, TCPコネクション, Webキャッシュ
設問2:〔原因の究明と対策の実施〕について、(1)、(2)に答えよ。
問題文を見る(2)本文中の下線(Ⅱ)について、別のボトルネックを20字以内で述べよ。
模範解答
ファイアウォールの処理能力
解説
解答の論理構成
-
原因調査で判明した事実
- 「プロキシ2が受け付けるTCPコネクション数が、設定の上限値まで増加」したため過負荷が発生していました。
- 過負荷の主因は「プロキシ1の先読み機能が大量のTCPコネクションを発生させた」と考えられています。
-
提案された対策
- B君は「対策として、プロキシサーバのアクセス順序を変更したい」と報告し、変更後の接続イメージを「図4」に示しました。
- 変更後はPC → プロキシ2 → プロキシ1 → インターネットという流れになり、先読みで生成される大量のTCPコネクションはプロキシ1と外部Webサイト間で直接張られます。
-
下線部(II)の主旨
- 本文には「プロキシ2のボトルネックは解消しても、(II)別のボトルネックが発生する可能性がある」とあります。
- アクセス順序変更により、プロキシ1から外部への同時接続数が増大し、その手前でパケットを中継・検査する装置が新たな負荷ポイントになります。
-
具体的にどこがボトルネックになり得るか
- 変更後の経路では、全ての外向き通信が「ファイアウォール」を経由します。
- プロキシ1の先読みで発生する多数のTCPコネクションも全てファイアウォールを通過するため、
「ファイアウォールの同時接続処理やパケットフィルタリング動作」が性能限界に近付き、新たなボトルネック候補となります。
-
以上より、下線部(II)の解答は
ファイアウォールの処理能力となります。
誤りやすいポイント
- 変更後は「プロキシ1の性能」や「インターネット回線帯域」が真っ先に問題になると誤解しやすいですが、接続数そのものを直に捌くのはファイアウォールです。
- 「プロキシ2が外部向けに開かなくなるので負荷は下がる」と短絡的に考え、ネットワーク全体の流量分布を見落とすミスが多発します。
- 図4の矢印をPCから外部サイトへの直接通信と読み違え、ファイアウォールを経由しないと誤読するケースがあります。
FAQ
Q: プロキシ1が外部サイトへ直接接続しても、キャッシュヒット率が高ければファイアウォール負荷は増えないのでは?
A: 先読みは「まだ閲覧していないページ」を取得するため、キャッシュヒット前に必ずTCPコネクションを張ります。結果としてファイアウォールの同時接続数が増大します。
A: 先読みは「まだ閲覧していないページ」を取得するため、キャッシュヒット前に必ずTCPコネクションを張ります。結果としてファイアウォールの同時接続数が増大します。
Q: ファイアウォールの性能を上げればアクセス順序変更だけで完璧に解決できますか?
A: ファイアウォール増強で別のボトルネックは抑えられますが、回線帯域やプロキシ1自身の同時接続制限など他要素も平行して確認すべきです。
A: ファイアウォール増強で別のボトルネックは抑えられますが、回線帯域やプロキシ1自身の同時接続制限など他要素も平行して確認すべきです。
Q: 先読み機能を無効化せず残した理由は何ですか?
A: 無効化すると通常時の応答性能(ユーザ体感速度)が低下する懸念があるためです。アクセス順序変更で「先読みのメリットを保持しつつ、プロキシ2の過負荷を回避する」ことを狙いました。
A: 無効化すると通常時の応答性能(ユーザ体感速度)が低下する懸念があるためです。アクセス順序変更で「先読みのメリットを保持しつつ、プロキシ2の過負荷を回避する」ことを狙いました。
関連キーワード: TCPコネクション, ボトルネック, ファイアウォール, プロキシサーバ, 帯域幅
設問3:
問題文を見る図4について、対策後の装置名とTCPコネクションを解答欄に記入せよ。
模範解答
下図の通り


解説
解答の論理構成
-
過負荷を起こしていた装置の特定
- ログ調査の結果、問題発生時には「プロキシ2が受け付けるTCPコネクション数が、設定の上限値まで増加している」一方で「プロキシ1が受け付けるTCPコネクション数は上限値の半数以下」であることが判明しました。
- したがって、プロキシ2がボトルネックになっていると分かります。
-
コネクション増加の原因
- 「Cサイトは、ほかのWebサイトへのリンク情報が多いので、プロキシ1の先読み機能が大量のTCPコネクションを発生させた」とあります。
- 先読み通信はプロキシ1→プロキシ2の方向に流れるため、プロキシ2が先読みトラフィックまで処理してしまい輻輳が発生していました。
-
解決策の方針
- B君は「対策として、プロキシサーバのアクセス順序を変更したい」と報告しています。
- 目的は「先読み機能を有効にしたまま、プロキシ2のボトルネックを回避する」ことです。
-
新しいアクセス順序の決定
- 先読みはウイルスチェック(プロキシ2)を通す必要がありません。
- そこで、PCから見て先にプロキシ2(ウイルスチェック)を置き、後段にプロキシ1(キャッシュ・URLフィルタリング)を置けば、
• Cサイトへの本流データは PC → プロキシ2 → プロキシ1 → ファイアウォール → Cサイト
• 先読みデータは プロキシ1 → ファイアウォール → ほかのWebサイト
となり、プロキシ2は先読みトラフィックを処理せずに済みます。
-
解答図(装置名とTCPコネクション)
- 左から「PC(ブラウザ)」「プロキシ2」「プロキシ1」「ファイアウォール」「Cサイト」
- 太線(⇔)で示すCサイト用TCPコネクション:PC ⇔ プロキシ2 ⇔ プロキシ1 ⇔ ファイアウォール ⇔ Cサイト
- 細線(←→)で示す先読み用 TCP コネクション:プロキシ1 ←→ ファイアウォール ←→ ほかのWebサイト
このように装置名とコネクションの向きを整理すると、模範解答と一致します。
誤りやすいポイント
- 「プロキシ1が先読みを行う=プロキシ1だけが大量接続を持つ」と短絡し、プロキシ2の接続数増加を見落とす。
- 先読み通信もウイルスチェック対象と考え、プロキシ2を前段に置く意図を逆に解釈してしまう。
- 図4の細線と太線を区別せず、すべてのTCPコネクションをプロキシ2経由と描いてしまう。
- 「プロキシサーバのIPアドレスを入れ替え」作業を行わずにPACファイルだけ修正すれば済むと思い込み、(I) で指摘されている「三つの変更作業」を軽視する。
FAQ
Q: なぜ「プロキシ2 → プロキシ1」の順ではなく「プロキシ1だけ」にすればよいのでは?
A: 先読みを無効化すれば確かに解消しますが、「通常時の応答性能が悪化する可能性」が問題文で示唆されています。順序変更なら先読み効果とウイルスチェックの両立が可能です。
A: 先読みを無効化すれば確かに解消しますが、「通常時の応答性能が悪化する可能性」が問題文で示唆されています。順序変更なら先読み効果とウイルスチェックの両立が可能です。
Q: プロキシ2の背後にあるTCP上限値は変更できないのですか?
A: 設定上限を上げてもハードウェア性能がボトルネックであるため、同時接続増加は危険です。設計時に「ボトルネックとなるプロキシ2のサーバ性能から設計した値」と明記されています。
A: 設定上限を上げてもハードウェア性能がボトルネックであるため、同時接続増加は危険です。設計時に「ボトルネックとなるプロキシ2のサーバ性能から設計した値」と明記されています。
Q: 変更後に「別のボトルネック」が起こると警告されていましたが?
A: 「(II) 別のボトルネックが発生する可能性」は、キャッシュヒット率低下やプロキシ1への負荷集中などのリスクを指します。結果として問題にならなかったのは、先読み通信がプロキシ1単独で捌ける範囲だったからです。
A: 「(II) 別のボトルネックが発生する可能性」は、キャッシュヒット率低下やプロキシ1への負荷集中などのリスクを指します。結果として問題にならなかったのは、先読み通信がプロキシ1単独で捌ける範囲だったからです。
関連キーワード: 永続的接続, 先読み機能, キャッシュ, ウイルスチェック, TCP同時接続





