World Wide Web の仕組み(1)

共通科目情報処理(上級)、インターネットの仕組み、2003年12月22日

                                       電子・情報工学系
                                       新城 靖
                                       <yas@is.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/ipe/inet-2003/2003-12-22
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/ipe/
http://www.coins.tsukuba.ac.jp/~yas/
http://www.ipe.tsukuba.ac.jp/~yshinjo/

■今日の重要な話

■HTTPとApache

WWW ページのデータは、 WWW サーバ ( httpd ) が保存している。 WWW クライアント(ブラウザ)は、WWW サーバから WWW ページのデータを取り寄せる。

この時使われる通信プロトコルをHTTP ( Hyper Text Transfer Protocol ) という。

WWW サーバには何種類もある。筑波大学教育用計算機システムで使っている WWWサーバのプログラムの名前は、Apache

■Apache の動作

起動時に設定ファイルを読み込み、要求を待つための TCP/IPのポートをいくつか(標準ではポー ト番号80番)を作成する。

図? 図? Apache の動作

図? Apache の動作

◆HTTP

WWW のクライアント(普通はWWWブラウザ)からの要求は、 HTTP によりサーバに伝えられる。 普段は、これら のプロトコルを直接人間が手で打ち込む必要はないが、WWWサーバの設 定を行なう過程では、確認のために telnet コマンドで接続して、直接手で打つ。

◆HTTPの要求

プロトコルは、実際には比較的簡単である。 よく使われるクライアントからサーバに送られる要求 ( メソッド(method) ) は、2種類だけ。 例:次のような URL のページをアクセスする。

	http://www.domain/dir1/file1.html
クライアントは、URL のうちのホスト部分を抜きだし、これと標準の 80ポート番号(80)を使って、TCP/IP のコネクションを張る。

クライアントは、HTTP で次のような要求を送る。


GET /dir1/file1.html HTTP/1.0[←]
[←]
([←] (Return, Enter)は、2つ必要。)

◆ファイルとの対応

WWWサーバは、普通は、このファイルは、あるディレクトリを起点にしたファ イル名になっている。 この起点となるディレクトリを ドキュメント・ルート・ディレクトリ(document root directory) という。 このディレクトリは、Apache では、標準で次のようになる。

/usr/local/apache/htdocs/
上の GET 要求に相当するファイルは、次のファイルになります。

/usr/local/apache/htdocs/dir1/file1.html

◆応答

Apache は、このファイルを開き、内容を読み込む。そして、こ の内容を、HTTP の応答(response)として、クライアントに返す。

----------------------------------------------------------------------
HTTP/1.1 200 OK
Date: Mon, 04 Jan 2002 12:53:07 GMT
Server: Apache/1.3.3
Last-Modified: Sun, 31 May 2002 05:35:29 GMT
Content-Length: 1234
Content-Type: text/html

<HTML>
<HEAD>
<TITLE>Univ of Tsukuba</TITLE>
</HEAD>
<BODY>

<H1>Welcome</H1>
....
</BODY>
</HTML>
----------------------------------------------------------------------

◆ステータス、メタデータ、データ

HTTP の応答の第一行は、テータス(成功か失敗かを表す)。 200 は、エラーがなく成功したという意味。

アクセスされた日付、データの日付、データの型と長さが現れる。 Content-Type:text/htmlならば、 HTML で書かれたページの意味。 インラインイメージなら、 なら image/gifimage/jpeg になる。

このような情報は、情報そのものではなくて、情報に関する情報という意味で メタ情報(メタデータ)という。

空行の後に、実際のデータが続く。

◆HTTP要求のオプション

HTTP の要求にも、オプションが渡せる。

例:テキストしか受け付けられない。


GET /dir1/file1.html HTTP/1.0[←]
Accept: text/*
[←]

例:指定した時刻に作成した キャッシュ が無効な時にだけデータの転送を要求


GET /dir1/file1.html HTTP/1.0[←]
If-Modified-Since: Mon, 07 Jan 2002 12:53:07 GMT
[←]

◆アクセスログ

クライアントからどのようなアクセスが行なわれたかは、 アクセス・ログ(access log) ( 転送ログ(transfer log) ) に記録される。たとえば、次のような情報が記録される。
192.168.10.20 - - [05/Jan/2002:01:08:11 +0900] "GET /dir1/file.html HTTP/1.0" 200 1622
このように、ホストの IP アドレス、日付、要求行、ステータス、転送された バイト数などが記録される。

エラーが起きた時や起動・終了の情報は、 エラー・ログ(error log) に記録される。

エラー・ログの例:

[Tue Jan  5 00:47:26 2002] [notice] Apache/1.3.3 (Unix) configured -- resuming normal operations
[Tue Jan  5 01:27:52 2002] [notice] httpd: caught SIGTERM, shutting down
[Tue Jan  5 05:57:11 2002] [error] [client 127.0.0.1] File does not exist: /usr/local/apache/htdocs/printenv
[Tue Jan  5 05:57:55 2002] [error] [client 127.0.0.1] Options ExecCGI is off in this directory: /usr/local/apache/htdocs/printenv.cgi
トラブルが起きた時には、このログを見て原因を探る

■実習

◆WWW サーバ上のデータの観察

http://www.ipe.tsukuba.ac.jp/ のページは、サーバ (icho) 上の /usr/local/apache/htdocs/ 以下にある。次のようにして観察する。
  1. telnet (Tera Term) でサーバ (icho) に接続してログインする。 ユーザ名とパスワードを打つ。 以下の一連の作業が終わったら、最後に、ログインを解除する(ログアウト) する。そのためには、exit コマンドかlogout コマンドを使う。
    
    % exit [←]
    
  2. less コマンドを実行する。less コマンド終了は、q キーを押す。
    
    % less /usr/local/apache/htdocs/index.html [←]
    
  3. WWW ブラウザ(Netscape など)を実行して、 http://www.ipe.tsukuba.ac.jp/を開く。
  4. WWW ブラウザで、ページのソース(HTML) を表示させる。Netscape なら 「表示」メニューから「ページのソース」を選ぶ。
  5. 2. と 4. を比較する。
Internet Explore の場合、文字化けしてソース・プログラムがうまく表示で きないかもしれない。

◆WWW サーバに残されたアクセスログの観察

アクセスログは、サーバ上の /usr/local/apache/logs/access_log というファイルにためられる。 次のようにして観察する。 http://www.ipe.tsukuba.ac.jp/ のページは、サーバ (icho) 上の /usr/local/apache/htdocs/ 以下にある。次のようにして観察する。
  1. telnet (Tera Term) でサーバ (icho) に接続してログインする。 ユーザ名とパスワードを打つ。 以下の一連の作業が終わったら、最後に、ログインを解除する(ログアウト) する。そのためには、exit コマンドかlogout コマンドを使う。
    
    % exit [←]
    
  2. 次のように tail コマンドを実行する。tail コマンド終了は、^C キー (Controlキーを押しながら C キーを押す)。
    
    % tail -f /usr/local/apache/logs/access_log [←]
    
  3. WWW ブラウザ(Netscape など)を実行して、 http://www.ipe.tsukuba.ac.jp/を開く。
  4. 「再読込み」を行う。
  5. データが流れていく時には、適当な所で ^C で tail コマンドを終了させる。
  6. 自分のコンピュータのホスト名が表示されるかを見る。telnet (Tera Term) のスクロール機能を使う(注意: telnet の中では、マウスはうまく働か ない。基本的にはキーボードからの文字しかサーバに送られない。)。
どんなデータがサーバに残されるか。

余裕があれば、/usr/local/apache/logs/error_log も観察しなさい。

◆HTTP による WWW ページのアクセス

telnet コマンドを使って、WWW サーバにアクセスしてページを取り寄せる。 telnet コマンドには、Windows 2000 の Tera Term ではなく、次のいずれか を使う。

サーバの telnet を使う方法。

  1. telnet (Tera Term) でサーバ (icho) に接続してログインする。 ユーザ名とパスワードを打つ。 以下の一連の作業が終わったら、最後に、ログインを解除する(ログアウト) する。そのためには、exit コマンドかlogout コマンドを使う。
    
    % exit [←]
    
  2. 次のように telnet コマンドを実行する。tail コマンドの強制終了は、 ^] キー(Controlキーを押しながら ] キー)を押した後に、「quit リターン」 と打つ。
    
    % telnet www.ipe.tsukuba.ac.jp 80 [←]
    
  3. 「Escape character is '^]'.」と表示されたら、次のように打つ。
    
    GET /index.html HTTP/1.0[←]
    [←]
    
    ([←] (Return, Enter)は、2つ必要。)
  4. 画面に WWW ページのデータが現れるのを確認する。 画面の最後に、 画面に「Connection closed by foreign host.」と表示され、 telnet コマンドを打つ以前の状態に戻っている。
これができたら、2. で、接続する WWW サーバを変えたり、3. で GET するファ イルの名前を変えてみる。icho の場合、ファイルの名前として、 「/~s012345/index.html」とすると、個人の ホーム・ページが表示できる。

Windows 2000 のコマンドプロンプトの中で telnet コマンドを使う方法。

  1. コマンドプロンプト」 を実行する。
  2. その中で、telnet [←] と打つ。
  3. 「 Microsoft Telnet> 」と表示されたら、次のように打つ。
    
    set local_echo[←]
    set codeset Japanese EUC[←]
    
  4. 「Microsoft Telnet>」に対して、open に 続き、サーバ名とポート番号 80 を打つ。
    
    open www.ipe.tsukuba.ac.jp 80[←]
    
  5. 画面が消えたら、次のように HTTP の命令を打つ。
    
    GET /index.html HTTP/1.0[←]
    [←]
    
    ([←] (Return, Enter)は、2つ必要。)
  6. 画面に WWW ページのデータが現れるのを確認する。
  7. 画面に「ホストとの接続が切断されました。続行するには何かキーを押して 下さい...」と表示されたら、何かキーを押す。 すると open コマンドを打つ以前の状態に戻っている。
  8. telnet コマンドを終了させ、コマンドプロンプトの 状態に戻すには、 「Microsoft Telnet>」に対して、quit リターンと打つ。
これができたら、4. で、接続する WWW サーバを変えたり、5. で GET するファ イルの名前を変えてみる。icho の場合、ファイルの名前として、 「/~s012345/index.html」とすると、個人の ホーム・ページが表示できる。


↑[もどる] ←[12月15日] ・[12月22日] →[1月13日]
Last updated: 2003/12/22 16:41:24
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>