■1.HTTPによるWeb閲覧の復習
・HTTPで通信をするには、3wayハンドシェークを行った上でTCPコネクションを確立する必要がある。
・Webサイトは、1つのページであっても、index.htmlファイルなどページに加え、画像ファイルやCSSファイルなど、いくつものファイルで構成されている。それらを全て取得して、ページが表示される。

■2.HTTP1.1の問題点
・1つのTCPコネクションで取得できるのは、1つのファイルのみ
(しかも、ファイルの取得が完了しないと、次のファイルを取得しない)
※過去問(R1秋AP午後問5)の図3が参考になります。HTTP1.1では、ファイルを順番に取得し、前のファイルの取得が終わらないと次を取得しない。
→これがHTTP通信の遅延の原因の一つです。
・(参考)GoogleChromeやIE8では1つのブラウザからのTCPコネクションの最大数は6に制限されています。
ネットワークスペシャリストを目指す女性SEあれ

そんな制限を無くしてしまえば、通信が高速化されるのでは?
このような制限は一般的です。それに、6というのも、昔は2つだったら、増えたのである。
そして、あまり増やしても、サーバへのTCPコネクション確立要求が増えすぎて、サーバエラー(503)になる。

■3.HTTPパイプライン機能
上記の問題点を解決するために、HTTP1.1では、HTTPパイプライン機能があります。これは、複数のファイルを同時に取得することができます。
ですが、これも万能ではありません。リクエストの順番とレスポンスの順番が正しくないと、次のパケットが送られません(HoLブロッキング)。
という事情などもあり、多くのブラウザでは標準では機能が有効になっていません。

■4.HTTP/2
・1つのTCPコネクションで複数のファイルを同時にやりとりできるようにしたのがHTTP/2です。HTTPパイプラインの課題であったHoLブロッキングも解消しています。
・注意点は、TLSが必須です。
※HTTP2の通信をパケットキャプチャで見せたいのですが、HTTP/2ではSSLが必須であり、複数のファイルをやりとりしている様子がわかりにくいと思います。

■5.参考:用語解説   ソケット
HTTPなどのTCPの通信では3ウェイハンドシェークによりTCPコネクションを確立する。TCPコネクションは、送信元IPアドレス、宛先IPアドレス、送信元ポート番号、宛先ポート番号で管理され、この4つの組み合わせ情報をソケット(※この言葉は無理して覚える必要がない)と言う。
見方を変えると、ソケットという通信路(TCPコネクション)が確立されたら、その上をアプリケーションが通信していると思ってもらえばいい。たとえば、PCが2つのブラウザを立ちあげ、1つめのブラウザはGoogle,もう一つはYahooを見ていたとする。1つめのブラウザがGoogleを見たときに、その結果を2つめのブラウザに返さないのは、通信を(IPアドレスだけではなく、ポート番号を含めた)ソケットで管理しているからである。
socket
ネットワークスペシャリストを目指す女性SEあれ? 


TCPコネクションとソケットは同じものと考えていいですか?
A.1つのTCPコネクションに1つのソケットが対応するので、概念としては同じ。ただ、言葉の意味そのものは、厳密には別。TCPコネクションを”識別”するための情報がソケットだと思えばいいだろう。

■5.過去問
R1秋AP午後問5の抜粋をみながらHTTP2を復習しましょう。

過去問
https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2019h31_2/2019r01a_ap_pm_qs.pdf
解答
https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2019h31_2/2019r01a_ap_pm_ans.pdf

問5 HTTP/2に関する次の記述を読んで,設問1〜4に答えよ。

 (中略)

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

[同時アクセス数改善に向けた調査]
 G君は,同時アクセス数の要件を満たせない原因を確認するために,ブラウザの開発者用ツールを用いて,ブラウザが一覧ページの表示に必要なファイルをどのように受信しているか調査した。G君が調査したファイルの受信状況(抜粋)を図2に示す。なお,ブラウザとサーバはHTTP/1.1 over TLS(HTTPS)で通信していた。

問5‗図2
図2 ファイルの受信状況(抜粋)

 次に,G君がサーバのログを調査したところ,TCPコネクションを確立できないという内容のログが多く残っていた。この結果からG君は,TCP/IPでサーバとブラウザが通信を行うために必要なサーバの[ a ]が枯渇し,新たなTCPコネクションを確立できなくなったと考えた。また,サーバの[ a ]の最大数は128に設定されていた。
 この二つの調査結果から,.屮薀Ε兇採用する複数のファイルを並行して受信するための手法によって,同時アクセス数が制限されてしまっていることが分かった。

設問1 〔同時アクセス数改善に向けた調査〕について,(1),(2)に答えよ。
 (1) 本文中の[ a ]に入れる適切な字句を解答群の中から選び,記号で答えよ。
   解答群
    ア IPアドレス   イ ソケット   ウ プロセス   エ ポート
(2)本文中の下線,砲弔い董た2の調査で分かった,複数のファイルを並行して受信するための手法とは,どのような手法か。25字以内で述べよ。
さて、設問の前に。ここではサーバのソケットの最大数が128に設定されている。あまりたくさんにすると、サーバのスペック(メモリなど)がオーバし、サーバーエラーを繰り返してしまうからである。
通常で考えると、ポート番号が取り得る値は、2バイト(=16ビット)なので、かなりの数が受け入れられるはずであるが、制限が厳しいなあという印象。設問を簡単にするためにしている工夫であろう。

設問1(1)空欄aにはイのソケットが入る。ソケットの言葉は上で説明した通り。

(2)図2をみよう。これはあるブラウザでの調査ということであるから、1台のサーバがどのようにTCPコネクションを確立しているかがわかる。
この場合、4つのコネクションを同時に確立していることがわかる。具体的には、image001.jpg、image005.jpg、image009.jpg、image013.jpgのファイルを並行して受信している。

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

補足すると、 32ユーザを超えるとエラーになるのは、これが原因の一つということである。
もうお分かりだと思うが、1つのPCが4つのコネクションを接続し、32ユーザが同時に接続すると、ソケットの上限の128に達することから、それ以上の通信がアクセスエラーになる。

〔レスポンスタイム改善に向けた調査〕
 G君は,一つのTCPコネクション内における,ブラウザとサーバの間の通信を調査した。HTTP/1.1 over TLS を用いてブラウザとサーバが通信するとき,ブラウザからサーバの[ b ]番ポートに対して[ c ]を送信し,サーバから[ d ]を返信する,最後にブラウザから[ e ]を送信することでTCPコネクションが確立する。その後TLSハンドシェイクを行い,ブラウザはHTMLファイルや画像ファイルなどをサーバヘ要求し,サーバは要求に応じてブラウザヘファイルを送信している(図3)。また,G君が利用したブラウザでは,HTTPパイプライン機能はオフになっていた。
問5_図3
図3 G君が調査したブラウザとサーバ間の通信(抜粋)

 G君は,この結果から,TCPコネクション内での画像ファイルの取得に掛かる時間が長くなり,多くの画像データを含む一覧ページではレスポンスタイムが長くなると考えた。

設問2 本文及び図3中の[ b ]〜[ e ]に入れる適切な字句を解答群の中から選び,記号で答えよ。
   解答群
    ア 25        イ 110         ウ 443
    エ ACK       オ ACK/FIN        カ FIN
    キ SYN       ク SYN/ACK       ケ TCP

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

設問2
b ウ:443 c キ:SYN d ク:SYN/ACK  e エ:ACK

設問3
問題文には、「TCPコネクション内での画像ファイルの取得に掛かる時間が長くなり」とあります。この要因を考えます。正解は、ウの「画像ファイルを一つずつ順番にサーバに要求し取得している。」ことです。1つのソケットでファイルを順番に取得します。1つのファイルが正常に取得し終わったら、次のファイルを取得します。

ちなみにアですが、画像のファイルの取得ごとにTCPコネクションを確立しているわけではありません。図にあるように、1つのコネクション上で複数のファイルを取得できます。

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

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
















解答例
設問4
(1) 前の画像ファイルの受信完了待ち


(2) 128
1つのブラウザが1つのTCPコネクションを用いれば、ソケットが128なので、最大128の同時アクセスが可能である。

スポンサードリンク