ネットワークスペシャリスト - SE娘の剣 -

ネットワークスペシャリストの試験対策サイトです。
ネスペ試験の合格体験談、合格のコツ、過去問解説、基礎知識などの情報を掲載します。

カテゴリ:10.アプリケーション層(L5〜L7) > 10.1 HTTP(Web)

1.HTTPとは
HTTP(HyperText Transfer Protocol)とは,インターネットの基本となるプロトコルです。Yahoo!などのWebサイトを閲覧する場合は、このHTTPというプロトコルが利用されます。
Web閲覧はHTTPと考えればいいのですが、URLを入力するときに、http://〜 で始めることから、なじみ深いことでしょう。

HTTP(HyperText)の意味ですが、通常のテキスト文書よりすごい(super)だけでなく、とびぬけてすごいという意味のハイパー(Hyper)です。
基本的にはHTML(Hyper Text Markup Language)という言語でWebサーバのコンテンツは作られますが、確かにリンクや画像や動画なども記載できるので、ハイパーな言語であるとも感じます。

2.HTTPSとは
https(HTTP over SSL/TLS)とは、そのフルスペルの通り、HTTPをSSLやTLSを使うことで、暗号化して安全に通信を行うことです。
最近ではGoogle検索もhttpsによる暗号化通信になりました。
オンラインバンキング使うと、https://〜で始まるURLが表示され、バーの部分が緑色になったりします。また、証明書の確認もできます。
※以下は三菱東京UFJ銀行のオンラインバンキングのサイトを開いた画面です。
UFJ

HTTPのヘッダの情報の一つです。
LBやProxyサーバにて、このフィールドに、接続元(クライアント)のIPアドレス情報を追記することができます。
追記するかは設定次第なので、たとえばProxyサーバのsquidであれば、forwarded_for on と設定します。
 
この点は、過去問(H24SC午後橘4)にて、LBの機能として「また,HTTPヘッダフィールドとしてX-Forwarded-Forヘッダフィールドを追加可能であるが,現在は利用していない」とあります。

そしてX-Forwarded-Forに関する出題が何度かされています。
LBに限らずProxyサーバでもそうであるが、IPアドレスが変換される場合がある。たとえば、Proxyサーバからの通信であれば、送信元IPアドレスは全てProxyになり、実際に通信する端末のIPアドレスは分からない。LBもLBにて振り分けた場合に、送信元IPアドレスをLBにしてしまうと、サーバにはすべてLBからの通信に見える。
そこで、HTTPヘッダフィールどに、X-Forwarded-Forとして、IPアドレス変換をする前の端末のIPアドレスをセットするのである。
では、過去問(H28SC秋午後1問3)を見てみましょう。もともとは多段プロキシの問題だったのですが、わかりにくいので私にて変更してあります

ある企業のネットワークは、プロキシサーバを経由し、FWからインターネットにアクセスします。しかし、FWの通信ログだけでは送信元PCが特定できない。
そこで、プロキシでは、HTTPヘッダとして[ d ]ヘッダフィールドを追加するように設定し、FWでは、[ d ]ヘッダフィールドをログに出力するように設定した。

設問(1) 本文中の下線,砲弔い董FWのログだけでは送信元PCが特定できない理由を、30字以内で述べよ。
(2)本文中の[ d ]に入る適切な字句を答えよ。
(1)送信元IPアドレスがプロキシのIPアドレスとなるので(2)X-Forwarded-For

「百聞は一見に如かず」です。まずはやってみましょう。
sef5

でも、サーバなんて持っていません。
今は便利になりました。VMwareなどで仮想サーバを立ててもいいのですが、今回はWindows8のOSの標準機能で作りましょう。従来はサーバに入っていたIISがクライアント端末にも入っています。
とても簡単にWebサーバが作れます。

IISのインストール
 コントロールパネル「プログラムと機能」「Windowsの機能の有効化または無効化」からIIS(インターネット インフォメーション サービス)をインストール。
iis
再起動すれば、Webサービスなどが利用できる。

サイト構築
ためにしに、メモ帳で「こんにちは」と入力し、ファイル名をindex.htmlとしてみよう。
本当はHTMLのフォーマットで書くべきなんですが、ここはこれでよしとします。
拡張子はtxtではなく、htmlにしましょう。作成したファイルは、C:\inetpub\wwwrootに入れます。このフォルダがWebサーバのフォルダです。
memo
Webサーバにアクセスしてみよう。
ブラウザを使って、自分のIPアドレスにhttpでアクセスしてみましょう。
http://192.168.1.100/index.html
web
以このように表示されます。とても簡単ですね。
是非とも、違うパソコンからやってみましょう。

応用情報のシラバスに以下の記載がある。
2) Web
WWW はインターネット上で提供されるハイパテキストのシステムであり,Web サーバとクライアント(ブラウザ)を利用してアクセスすること,Web ページはHTML,XML などのマークアップ言語で記述され,ハイパリンクで簡単に別のページを参照できることや,Web アプリケーションの仕組み,特徴,機能を理解する。

【用語例】 HTTP,CGI,cookie,URL

4) 検索エンジン
Web の環境で利用される代表的な検索エンジンの仕組み,特徴を理解する。

【用語例】 全文検索型,ディレクトリ型,ロボット型
webは「クモの巣」という意味である。
WWW(World Wide Web)は世界中に張りめぐらされたクモの巣のようなネットワークである。WWWは仕組みや概念を表すものである。WWWサーバやWWWクライアント(主にブラウザ)、URLを利用することで、HTMLというと統一したフォーマットにて簡単に情報の発信と閲覧ができるようにする仕組みである。

HTTPの通信をパケットキャプチャしてみると、以下のような流れがわかる。
1)Client→Server GET /index.html HTTP/1.1 ←1.1はHTTPのバージョン。旧バージョンは1.0
2)Client←Server HTTP/1.1 200 Document follows ← 応答コード200(OK)
3)Client←Server HTMLデータ
2

あれ?
3way-handshakeは無いのですか?
いや。あるよ。厳密には、上記の1)〜3)の前後にも、TCP/IPのオーバーヘッドが間に入る。
X)Client→Server 3way-handshake SYN
X)Client←Server 3way-handshake SYN,ACK
X)Client→Server 3way-handshake ACK
1)Client→Server GET /index.html HTTP/1.1
2)Client←Server HTTP/1.1 200 Document follows
X)Client→Server ACK
3)Client←Server HTMLデータ

PC(ブラウザ) → httpリクエスト → Webサーバ
          ← httpレスポンス ←
    
     
過去問(H25SC秋午後玉1)にリクエストとレスポンスの具体例があるので掲載する。
見てもらうと分かるが、リクエストはGETなどで情報を取得に行く。
レスポンスは、「200 OK」などの、HTTPのステータスコードからはじまる。

リクエスト1
GET /javarhino/ HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg,
image/pjpeg, application/×-shockwave-flash., */*
Accept-Language: ja
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0;Windows NT 5.1; SVl)
Host: D.D.D.D
Connection: Keep-Alive

レスポンス1

HTTP/1.1 200 OK
Content-Type: text/html
Connection: Keep-Alive
Server: Apache
Content-Length: 12e
<html><head></head><body><appletarchiveR"exploit.jar"
code="exploit.class" width="1" height="1"></applet></body></html>


RFCで規定されている。
コード
意味

100番台処理中
200番台正常終了200 OK(正常終了)
300番台さらに追加の処理が要求される状態
400番台クライアント側エラー401 Unauthorized(認証に失敗) 
404 Not Found(指定されたページが無い)
500番台サーバ側エラー503 Service Unavailable(サービス利用不可)

※CGIのスクリプトがエラーになるなど

過去問(H25SC秋午後玉1)を見てみよう。
・IPアドレスC.C.C.Cに対して,MさんのPCは次の2種類のリクエストだけを送信していた。
 ―http://C.C.C.C/config.binへのGETリクエスト(9月26日12:28)
 ―http://C.C.C.C/gate.phpへのPOSTリクエスト(9月26日12:28以降,5分おき)
・上記のURL,及びIPアドレスC.C.C.Cの80番ポートにぅ屮薀Ε兇妊▲セスを試行してみたところ,当該サーバは稼働していないようであった。

設問2(3) 図7中の[ a ]に入れる適切な数字を答えよ。また,図7中の下線い砲弔い董ぅ屮薀Ε兇妊▲セスを試行した際の最も適切なレスポンスを解答群から選び,記号で答えよ。

解答群
 ア 204 No Content 
 イ 404 Not Found
 ウ 503 Service Unavailable 
 エ レスポンスなし
ネットワークスペシャリストを目指す女性SEえっとー 

結構迷いますね〜




そうだね。正解は、エである。
サーバが稼働していないということは、応答メッセージを返すことができない。
利用者には「このページは表示できません」と、クライアントのブラウザが表示することになる。

過去問では「HTTPを使って、Webサーバのコンテンツのアップロードや更新を可能にするプロトコル(H21NW午前 問12)」「HTTPを拡張したプロトコルを使って,サーバ上のファイルの参照や作成,削除及びバージョン管理が行える」とある。

Webサーバの代表的なソフトであるIISやApacheには、WebDAVの機能が組み込まれている。
1

これってFTPでできますよね。
わざわざHTTPでやるメリットはありますか?
確かにFTPでできる。でも、WebDAVを好む人が結構多い。
一つは、FWでHTTPは空いているが、FTPは閉じられている場合にも使える。
また、ブラウザベースで全てができて、ドラッグ&ドロップも使える。共有フォルダのような使い方ができるので、便利ではあります。

・HTTP1.1はRFC2616で規程され、Webを閲覧するためのGET、掲示板への書き込みのためのPOSTなど、合計8つのメソッドがある。
・メソッドは「OPTIONS」「GET」「HEAD」「POST」「PUT」「DELETE」「TRACE」「CONNECT」がある。

・GETは受信は文字通り「取得する」から、Webサーバから、コンテンツを取得します。Web閲覧がこれに値します。逆にWebサーバに送信するのがPUT。これとは別にPOSTというのがあり、過去問で問われています。
では、POSTとは何でしょう。
Webアプリケーションを作られた方は、METHOD="GET" あるいはPOSTなどの記載をされたこともあるでしょう。GETでもPOSTでも、どちらもできることはほぼ同じです。
1

ではなぜ2つあるのですか?
HTTPの昔のバージョン(HTTP/0.9)には、GETしかなかったとのことですよね。だったらGETだけで十分では?
それは、GETでは文字数制限などの問題があります。
POSTはその問題を改良したのです。
なので、掲示板にデータを書き込むなどの処理には、GETではなくPOSTがよく使われます。

違いとしてよく話をされるのは2つでしょう。
〜信方法
 GETはURLに引数を記載します。
例えば、http://xxx.seeeko.com/index.asp?id=aaa
一方、POSTはURLに引数を記載せず、HTTPのデータの中に記載します。なのでURLは以下のようになる。
http://xxx.seeeko.com/index.asp

以下に詳しく書いたので、参考にしてほしい。
http://sc.seeeko.com/archives/4789459.html

▲ャッシュされるか
 GETの応答はキャッシュされ、POSTの応答はキャッシュされません。キャッシュときに不正確な情報になりますので、デメリットがあります。

多少乱暴な言い方ですが、分かりやすく考えてもらうと、以下になります。
・GETはデータを取得する。(WEBの閲覧)
・POSTはデータを送信する。(掲示板への書き込みなど)

・おさらいとして、H21NW午前2問10を解いてみましょう。
 問10 HTTPのGETメソッドとPOSTメソッドに関する記述のうち,適切なものはどれか。

ア GETの実装は必須であるが,POSTはオプションである。
イ GETはサーバへの送信,POSTはサーバからの応答である。
ウ POSTの応答はキャッシュされるが,GETはキャッシュされない。
エ POSTはサーバのCGIを起動できるが,GETは起動できない。
アは正解である。必須はGETとHEADのみ。セキュリティの問題から、WebサーバではTRACEメソッドを無効にします。設定は、httpd.confで行います。必須のメソッドでは無いので、無効にできます。
イは、GETもPOSTもサーバへの送信で利用される
ウは逆
エどちらも起動できる。

・H21NW午後1問2では、プロキシに接続するためのメソッドであるCONNECTメソッドが穴埋めで問われた。
Webメールで利用するHTTPSでは、PCは[ オ ]メソッドを利用してプロキシサーバへ接続先を指定し、SSLセッションをASPサーバとの間で確立する。


以下のに当てはまる字句を答えよ。
(2)特に,会員情報の登録処理や注文処理のような重要な処理を実行するページには[ a ]メソッドでアクセスするようにし,そのhiddenパラメタに秘密情報(ページトークン)が挿入されるように,前のページを自動生成する。実行ページでは,その値が正しい場合だけ処理を行う。もし[ a ]メソッドの代わりに[ b ]メソッドでアクセスすると,秘密情報をURLに付加して送信することになるので,ここでは利用を避けるべきである。また,HTMLフォームで<form>タグを用いる場合,メソッド属性の指定を省略すると[ a ]メソッドと解釈されるので,適切に指定する必要がある。
(H23AP問9設問1)
女性腕組み

さきほどの解説を見ていただくと、簡単に解けるかもしれません。
また、メソッドはいくつかありますが、基本的にはこの2つを覚え、テスト対策としましょう。
正解
a POST
b GET

1.マークアップ(Markup Language)言語とは
HTML(HyperText Markup Language)とXML(eXtensible Markup Language)は、どちらもマークアップ言語です。
マークアップ言語に関して、過去問(H25年春IP問69)では「マークアップ言語では,画面表示や印刷などを目的に,文章の内容だけでなく,文書構造やレイアウト情報,文字のフォント及びサイズなどを指定する記述を直接埋め込むことができる」とあります。
HTMLがマークアップ言語の代表です。<font>などのタグを使うことで、色や文字の大きさなどを指定することができます。

2.HTMLとXMLの違い
Webのページ作成に利用されるHTMLとXMLの違いについてです。eXtensibleは拡張可能という意味ですから、XMLはHTMLの拡張であるとイメージしてもらえばいいでしょう。
XMLに関して、応用情報技術者試験のシラバスでは、「HTML の機能に加えて,独自にタグを定義することができる機能を備え,主にインターネットを介したデータ交換に利用されている」と述べられています。

さて、両者の違いは何でしょうか。次の過去問(H24春IP)を見ながら確認をしましょう。
問67 HTMLに関する記述として,適切なものはどれか。
ア タグを使ってWebページの論理構造やレイアウトが指定できるマークアップ言語である。
イ ブラウザで動作する処理内容を記述するスクリプト言語である。
ウ ブラウザとWebサーバとの間で行う通信のプロトコルである。
エ 利用者が独自のタグを定義してデータの意味や構造を記述できるマークアップ言語である。
選択肢アがHTMLの説明で、HTMLは「タグを使ってWebページの論理構造やレイアウトが指定できるマークアップ言語」です。
選択肢エがXMLの説明で、XMLは「利用者が独自のタグを定義してデータの意味や構造を記述できるマークアップ言語」です。
ちなみに、選択肢イはJavaScriptです。

(H19秋AD午前)
問45 HTMLによるハイパテキストの特徴として,適切なものはどれか。
ア 文書情報を扱うので,画像ファイルへのリンクはできない。
イ リンクは階層構造なので,別のテキストに移動する場合は一度最上位の階層まで戻らなければならない。
ウ リンクは双方向の情報をもつので,テキスト間を自由に行き来できる。
エ リンクをクリックすることによって,指定されたテキストに移動できる。
 
(H19春AD午前)
問22 HTMLとXMLの特徴を比較した記述のうち,適切なものはどれか。
ア HTMLでは属性値をすべて二重引用符(")又は一重引用符(')で囲む必要があるが,XMLではその必要はない。
イ HTMLではユーザが独自に要素を定義できるが,  XMLでは言語仕様で決められた要素だけが有効である。
ウ HTMLでは要素によっては終了タグを省略できるが,  XMLでは開始タグと終了タグで内容を囲むか,空要素の形式で記述する必要がある。
工 HTMLでは要素名の大文字と小文字を区別するが,XMLでは区別しない。
 
(H24秋FE午前)
問8 XMLの特徴として,最も適切なものはどれか。
ア XMLでは,HTMLに,  Webページの表示性能の向上を主な目的とした機能を追加している。
イ XMLでは,ネットワークを介した情報システム間のデータ交換を容易にするために,任意のタグを定義することができる。
ウ XMLで用いることができるスタイル言語は,  HTMLと同じものである。
エ XMLは,  SGMLを基に開発されたHTMLとは異なり,独自の仕様として開発された。


このページのトップヘ