令和元年秋期試験午後問題 問5

問5 ネットワーク

⇱問題PDF
HTTP/2に関する次の記述を読んで,設問1~4に答えよ。
 E社は,地域密着型の写真店であり,小学校の運動会や遠足などの行事にカメラマンを派遣し,子供の写真を撮影して販売している。今までは,写真を販売するために,小学校の廊下などに写真のサンプルを掲示し,保護者に購入する写真を選んでもらっていた。しかし,保護者から"インターネットで写真を選びたい","写真の電子データを購入したい"との要望が多く寄せられるようになり,インターネット販売用のシステム(以下,新システムという)を開発することにした。新システムの開発は,SIベンダのF社が担当することになった。
 新システムの開発は,要件定義,設計,実装と順調に進み,テスト工程における性能テストをF社のG君が担当することになった。

〔新システムの性能要件〕
 G君は新システムの性能テストを行うに当たり,要件定義書に記載の性能要件を確認した。図1に新システムの性能要件(抜粋)を示す。
pm05_1.png
〔性能テストの結果〕
 G君は,多数のWebブラウザ(以下,ブラウザという)からのアクセスをシミュレートする負荷テストツールを用いて,開発した新システムの性能テストを行った。性能テストの結果,同時アクセス数が,32ユーザを超えるとアクセスエラーが発生した。ただし,エラー発生時のサーバのCPU,メモリ,ネットワーク回線の使用率は全て10%以下,ディスクのI/O負荷率は20%以下であった。また,レスポンスタイムは,写真を一覧表示するページ(以下,一覧ページという)の表示が最も長く3.0秒だったが,一枚の写真を拡大表示するページなどの他のページの表示は1.0秒であった。

〔同時アクセス数改善に向けた調査〕
 G君は,同時アクセス数の要件を満たせない原因を確認するために,ブラウザの開発者用ツールを用いて,ブラウザが一覧ページの表示に必要なファイルをどのように受信しているか調査した。G君が調査したファイルの受信状況(抜粋)を図2に示す。なお,ブラウザとサーバはHTTP/1.1 over TLS(HTTPS)で通信していた。
pm05_2.png
 次に,G君がサーバのログを調査したところ,TCPコネクションを確立できないという内容のログが多く残っていた。この結果からG君は,TCP/IPでサーバとブラウザが通信を行うために必要なサーバのaが枯渇し,新たなTCPコネクションを確立できなくなったと考えた。また,サーバのaの最大数は128に設定されていた。
 この二つの調査結果から,①ブラウザが採用する複数のファイルを並行して受信するための手法によって,同時アクセス数が制限されてしまっていることが分かった。

〔レスポンスタイム改善に向けた調査〕
 G君は,一つのTCPコネクション内における,ブラウザとサーバの間の通信を調査した。HTTP/1.1 over TLSを用いてブラウザとサーバが通信するとき,ブラウザからサーバのb番ポートに対してcを送信し,サーバからdを返信する,最後にブラウザからeを送信することでTCPコネクションが確立する。その後TLSハンドシェイクを行い,ブラウザはHTMLファイルや画像ファイルなどをサーバへ要求し,サーバは要求に応じてブラウザへファイルを送信している(図3)。また,G君が利用したブラウザでは,HTTPパイプライン機能はオフになっていた。
pm05_3.png
 G君は,この結果から,②TCPコネクション内での画像ファイルの取得に掛かる時間が長くなり,多くの画像データを含む一覧ページではレスポンスタイムが長くなると考えた。

〔HTTP/2を用いた新システムの開発〕
 G君が調査結果を上司のH課長に報告したところ"HTTP/2の利用を検討すること"とのアドバイスを得た。HTTP/2では,③一つのTCPコネクションを用いて,複数のファイルを並行して受信するストリームという仕組みなど,多くの新しい仕組みが追加されていることが分かった。
 そこで,G君は新システムのWebサーバにHTTP/2の設定を行い,再度性能テストを実施した。その結果,新システムが図1の性能要件を満たしていることが確認できた。
 その後,新システムの開発は完了し,E社は写真のインターネット販売を開始した。

設問1

〔同時アクセス数改善に向けた調査〕について,(1),(2)に答えよ。
  • 本文中のaに入れる適切な字句を解答群の中から選び,記号で答えよ。
  • 本文中の下線①について,図2の調査で分かった,複数のファイルを並行して受信するための手法とは,どのような手法か。25字以内で述べよ。
a に関する解答群
  • IPアドレス
  • ソケット
  • プロセス
  • ポート

解答例・解答の要点

  • a:
  • 同時に複数のTCPコネクションを確立する手法 (22文字)

解説

  • aについて〕
    ソケット(socket)は、アプリケーションがTCP/IPを使用して通信を行うための仮想的なプログラミングインタフェースです。通信相手に繋がる電話回線のようなもので、ソケットにデータを書き込んで相手にデータを送ったり、逆に相手から届いたデータをソケットから読み込んだりできる仕組みになっています。

    通常、コンピュータでは同時に使用可能なソケット数に制限があります。TCPコネクションが1つ確立されるとソケットが1つ消費されるので、同時接続数がソケットの上限に達してしまうと、いずれかのTCPコネクションが切断されるまで新たなTCPコネクションを確立できなくなってしまいます。

    本問のサーバはソケットの最大数が128です。図2を見ると1つのブラウザが少なくとも4つのTCPコネクション(img001、img005、img009、img013)を同時に確立しているので、多くても「128÷4=32ユーザ」を超えると新たなTCPコネクションを確立できないエラーが多発することになります。

    a=イ:ソケット

  • HTTP/1.1ではブラウザから同一のサーバへの接続数の推奨値は2ですが、主要なブラウザはWebページの表示速度を上げるために最大で6のTCPコネクションを同時に確立し、並列ダウンロードする実装を行っています。

    図2の受信状況を見ると、index.htmlのダウンロードが終了し、HTML内に記述された画像リソースが判明すると同時にブラウザは4つのTCPコネクションを確立し、並列ダウンロードを開始しています。もし、ブラウザからの同時接続数が2以下に制限されていれば、性能要件である40ユーザの同時アクセスは達成できていたはず(40人×2ソケット=80<128)ですから、同時アクセス数の制限は、ブラウザが採用する「同時に複数のTCPコネクションを確立する手法」により生じていることになります。

    ∴同時に複数のTCPコネクションを確立する手法

設問2

本文及び図3中のbeに入れる適切な字句を解答群の中から選び,記号で答えよ。
b,c,d,e に関する解答群
  • 25
  • 110
  • 443
  • ACK
  • ACK/FIN
  • FIN
  • SYN
  • SYN/ACK
  • TCP

解答例・解答の要点

b:
c:
d:
e:

解説

bについて〕
HTTP over TLS(HTTPS)のポート番号が問われています。HTTPSは「TCP/443番」でサービスを待ち受けます。これは必ず覚えておきましょう。

なお、25番はSMTP、110番はPOP3のポート番号です。平文のHTTPは80番です。

b=ウ:443

cdeについて〕
本文中や図3でも説明されているように、TCPでは3回のパケット送信を経てコネクションを確立します。この手順を3ウェイハンドシェイクをいいます。

TCPがコネクションを確立する手順は次のようになっています(説明中で〇〇パケットとしていますが、正確にはTCPヘッダー中のコントロールフラグの〇〇を1に設定したパケットです)。
  1. 要求元から要求先に対してSYNパケットを送信する(接続要求)。
  2. SYNパケットを受信し要求先は、要求者の接続を許可することを表すSYN/ACKパケットを送信する(接続許可)。
  3. SYN/ACKパケットを受信した要求元は接続開始を表すACKパケットを要求先に送信し、相手との通信を開始する(コネクション確立)。
pm05_4.png
したがって、まずブラウザからサーバにSYNパケットを送信し、サーバはSYN/ACKパケットで応答します。最後にブラウザからサーバにACKパケットを送り、それがサーバで受理されればコネクション確立となります。

c=キ:SYN
 d=ク:SYN/ACK
 e=エ:ACK

なお、FINパケットとFIN/ACKパケットはコネクション切断のシーケンスで使用するものです。

設問3

本文中の下線②について,TCPコネクション内での画像ファイルの取得に時間が掛かる要因は何か。解答群の中から選び,記号で答えよ。
解答群
  • 画像ファイルの取得ごとにTCPコネクションを確立している。
  • 画像ファイルを圧縮せずに取得している。
  • 画像ファイルを一つずつ順番にサーバに要求し取得している。
  • 複数の画像ファイルをまとめて取得している。

解答例・解答の要点


解説

  • HTTP/1.1では目的の通信が終わった後もTCPコネクションを一定時間維持し、連続した要求が来たときは前回の接続を再利用することで、毎回TCPコネクションを確立する無駄を省いています。この仕組みを「Keep-Alive」といいます。
    図3の通信状況を見るとわかるように、1度TCPコネクションを確立した後は毎回コネクションを確立することなしに、その1つのコネクション上で複数の画像ファイルの要求及びダウンロードを行っているので誤りです。
  • JPEGは静止画データの圧縮符号化方式です。図3を見ると画像データはJPEGに圧縮された状態で転送していることがわかるので誤りです。
  • 正しい。HTTP/1.1は、1つのリクエストに対して1つのリクエストを返すという基本構造なので、リクエストの結果を全て取得し終わるまで、次のリクエストを発行できません。画像ダウンロードを待っている間は何もできないのでタイムロスが生じます。
  • 図3を見ると、1つの画像ファイルのダウンロードが終わったら次をリクエストするというように、1つずつダウンロードしているので誤りです。
∴ウ:画像ファイルを一つずつ順番にサーバに要求し取得している。

設問4

本文中の下線③について,(1),(2)に答えよ。
  • 複数のファイルを並行して受信可能となることで,ブラウザのどのような待ち時間がなくなるか。20字以内で答えよ。
  • HTTP/2の採用によって,新システムが許容できる最大の同時アクセス数は幾つになるか答えよ。ここで,新システムにアクセスする全てのブラウザがHTTP/2を利用し,一つのTCPコネクションを用いてアクセスするものとする。

解答例・解答の要点

  • 前の画像ファイルの受信完了待ち (15文字)
  • 128

解説

  • HTTP/2は、HTTP/1.1の後継となる規格で2015年に策定されました。中身はGoogleが開発したSPDYというプロトコルほぼそのままです。HTTP/2ではストリームの採用(後述)、ヘッダーの圧縮、HTTPS接続の必須化、サーバプッシュなど、HTTP/1.1から様々な変更が行われています。

    ストリームとは、1つのTCPコネクションの中にハンドシェイク不要の仮想的なTCPソケットを複数作成し、それを用いて並列ダウンロードを実現する仕組みです。ストリームを使用すると、複数のリクエストを同時に送り、複数のファイルを並行してダウンロードすることが可能となります。
    pm05_5.png
    上図を見るとわかるように、ブラウザ側では前の画像の受信完了を待つことなく次のリクエストを送信でき、サーバ側では複数のリクエストを次々に処理して応答を返せます。設問はブラウザ側の待ち時間短縮について問うているため、前段の「前の画像ファイルの受信完了待ち時間」について解答することになります。

    ∴前の画像ファイルの受信完了待ち

    ※補足しておくと、HTTP/1.1にも前のリクエストの結果を待つことなく次のリクエストを発行できる仕組みが用意されていました。本文中で登場する「HTTPパイプライン機能」が正にそうです(パイプライニングとも呼ばれます)。しかし、HTTPパイプライン機能には幾つかの問題があり、期待するほど通信の効率化に寄与できなかったため、一部のブラウザにしか実装されていませんでした。

  • HTTP/2を使用すると、1つのサーバに対してブラウザが確立するTCPコネクションは1つだけになります。このため、理論上はサーバのソケットの最大数である128ユーザまで同時アクセス可能です。

    ∴128
模範解答

Pagetop