共通科目情報処理(上級)、インターネットの仕組み、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/
- WWW サーバ Apache
- HTTP, Hyper Text Transfer Protocol,hypertexttransferprotocol
- ログ
WWW ページのデータは、
WWW サーバ
(
httpd
)
が保存している。
WWW クライアント(ブラウザ)は、WWW サーバから
WWW ページのデータを取り寄せる。
この時使われる通信プロトコルをHTTP
(
Hyper Text Transfer Protocol
)
という。
WWW サーバには何種類もある。筑波大学教育用計算機システムで使っている
WWWサーバのプログラムの名前は、Apache 。
起動時に設定ファイルを読み込み、要求を待つための
TCP/IPのポートをいくつか(標準ではポー
ト番号80番)を作成する。
図? Apache の動作
WWW のクライアント(普通はWWWブラウザ)からの要求は、
HTTP
によりサーバに伝えられる。
普段は、これら
のプロトコルを直接人間が手で打ち込む必要はないが、WWWサーバの設
定を行なう過程では、確認のために
telnet
コマンドで接続して、直接手で打つ。
プロトコルは、実際には比較的簡単である。
よく使われるクライアントからサーバに送られる要求
(
メソッド(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/gif
や image/jpeg
になる。
このような情報は、情報そのものではなくて、情報に関する情報という意味で
メタ情報(メタデータ)という。
空行の後に、実際のデータが続く。
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
トラブルが起きた時には、このログを見て原因を探る
http://www.ipe.tsukuba.ac.jp/ のページは、サーバ (icho) 上の
/usr/local/apache/htdocs/ 以下にある。次のようにして観察する。
- telnet (Tera Term) でサーバ (icho) に接続してログインする。
ユーザ名とパスワードを打つ。
以下の一連の作業が終わったら、最後に、ログインを解除する(ログアウト)
する。そのためには、exit コマンドかlogout コマンドを使う。
% exit
- less コマンドを実行する。less コマンド終了は、q キーを押す。
% less /usr/local/apache/htdocs/index.html
- WWW ブラウザ(Netscape など)を実行して、
http://www.ipe.tsukuba.ac.jp/
を開く。
- WWW ブラウザで、ページのソース(HTML) を表示させる。Netscape なら
「表示」メニューから「ページのソース」を選ぶ。
- 2. と 4. を比較する。
Internet Explore の場合、文字化けしてソース・プログラムがうまく表示で
きないかもしれない。
アクセスログは、サーバ上の
/usr/local/apache/logs/access_log
というファイルにためられる。
次のようにして観察する。
http://www.ipe.tsukuba.ac.jp/ のページは、サーバ (icho) 上の
/usr/local/apache/htdocs/ 以下にある。次のようにして観察する。
- telnet (Tera Term) でサーバ (icho) に接続してログインする。
ユーザ名とパスワードを打つ。
以下の一連の作業が終わったら、最後に、ログインを解除する(ログアウト)
する。そのためには、exit コマンドかlogout コマンドを使う。
% exit
- 次のように tail コマンドを実行する。tail コマンド終了は、^C キー
(Controlキーを押しながら C キーを押す)。
% tail -f /usr/local/apache/logs/access_log
- WWW ブラウザ(Netscape など)を実行して、
http://www.ipe.tsukuba.ac.jp/
を開く。
- 「再読込み」を行う。
- データが流れていく時には、適当な所で ^C で
tail コマンドを終了させる。
- 自分のコンピュータのホスト名が表示されるかを見る。telnet (Tera
Term) のスクロール機能を使う(注意: telnet の中では、マウスはうまく働か
ない。基本的にはキーボードからの文字しかサーバに送られない。)。
どんなデータがサーバに残されるか。
余裕があれば、/usr/local/apache/logs/error_log も観察しなさい。
telnet コマンドを使って、WWW サーバにアクセスしてページを取り寄せる。
telnet コマンドには、Windows 2000 の Tera Term ではなく、次のいずれか
を使う。
- サーバに Tera Term で接続して、そこで telnet と打つ。
-
「コマンドプロンプト」
で telnet と打つ。
サーバの telnet を使う方法。
- telnet (Tera Term) でサーバ (icho) に接続してログインする。
ユーザ名とパスワードを打つ。
以下の一連の作業が終わったら、最後に、ログインを解除する(ログアウト)
する。そのためには、exit コマンドかlogout コマンドを使う。
% exit
- 次のように telnet コマンドを実行する。tail コマンドの強制終了は、
^] キー(Controlキーを押しながら ] キー)を押した後に、「quit リターン」
と打つ。
% telnet www.ipe.tsukuba.ac.jp 80
- 「Escape character is '^]'.」と表示されたら、次のように打つ。
GET /index.html HTTP/1.0
(
(Return, Enter)は、2つ必要。)
- 画面に WWW ページのデータが現れるのを確認する。
画面の最後に、
画面に「Connection closed by foreign host.」と表示され、
telnet コマンドを打つ以前の状態に戻っている。
これができたら、2. で、接続する WWW サーバを変えたり、3. で GET するファ
イルの名前を変えてみる。icho の場合、ファイルの名前として、
「/~s012345/index.html」とすると、個人の ホーム・ページが表示できる。
Windows 2000 のコマンドプロンプトの中で telnet コマンドを使う方法。
-
「コマンドプロンプト」
を実行する。
- その中で、telnet
と打つ。
- 「
Microsoft Telnet>
」と表示されたら、次のように打つ。
set local_echo
set codeset Japanese EUC
- 「Microsoft Telnet>」に対して、open に
続き、サーバ名とポート番号 80 を打つ。
open www.ipe.tsukuba.ac.jp 80
- 画面が消えたら、次のように HTTP の命令を打つ。
GET /index.html HTTP/1.0
(
(Return, Enter)は、2つ必要。)
- 画面に WWW ページのデータが現れるのを確認する。
-
画面に「ホストとの接続が切断されました。続行するには何かキーを押して
下さい...」と表示されたら、何かキーを押す。
すると
open コマンドを打つ以前の状態に戻っている。
- 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>