共通科目情報処理(上級)、インターネットの仕組み、2004年12月20日 電子・情報工学系 新城 靖 <yas@is.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/ipe/inet-2004/2004-12-20
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/ipe/
http://www.coins.tsukuba.ac.jp/~yas/
http://www.ipe.tsukuba.ac.jp/~yshinjo/
インターネットで通信をプログラムを利用する時、 「クライアント」と「サーバ」という分けて考える。
例:
コンピュータが1台しかない場合、プログラムは1つでよい。通信をする場合 には、プログラム(コンピュータ)が2つになる。そのうちの1つのプログラ ム(またはコンピュータ)を、「クライアント」、もう1つを「サーバ」とい う。
元々の意味
図? サービスの授受によるクライアントとサーバの定義
サービスを提供する方は、1つのプログラム(コンピュータ)で複数の利用者 の面倒をみる。その結果、1台のサーバに複数のクライアントがつながる。
図? 複数のクライアントによるサーバの共有
TCP/IP では、通信するプログラムとプログラムの間は、電話で会話をするよ うに通信が行われる。両方同時に話をすることは、(可能ではあるが)あまり 行われない。次のようなことを、繰り返すことになる。
図? 通信のパタンからみたクライアントとサーバの定義
TCP/IP の通信では、通信を始める前に、まず、通信路を作る作る必要がある。 これは、電話で話をする前に、まず、電話をかける操作を行うことと似ている。以上のように、クライアントとサーバは、いろいろな意味で使われる。これら の意味は、多くの場合、一致しているが、一致していないこともある。
通信を開始するパタンで、コンピュータ、プログラム、人間は、次の2つに分 類される。
図? 能動的なクライアントと受動的なサーバ
例:WWWサーバは、WWWクライアントから何か要求が来ない限り、ずっと 黙っている。
コンピュータを使う時には、人間が能動的になり、コンピュータが受動的にな る。
テレビを見ている時には、人間が受動的になり、テレビが能動的になる。
講義形式の授業では、サービスの授受では、教官がサーバで、学生がクライア ントになる。通信の開始の方法では、教官が能動的になり、学生が受動的にな る。
大学以上では、学生は、能動的になることが求められている。
Windows 2000 を使っている時、Z: ドライブのデータは、ファイル・サーバに 置かれている。ここにあるファイルは、どのクライアントPCを使っていても、 同じように参照できる。
デスクトップに置いたデータは、ログオン時にサーバからクライアントへコピー される。ログオフ時には、クライアントからサーバへコピーされる。大きなデー タをデスクトップに置くと、ログオンとログオフが遅くなる。
Z: ドライブに置いたデータは、ログオン時/ログオフ時にコピーされない。
この時使われる通信プロトコルをHTTP ( Hyper Text Transfer Protocol ) という。
WWW サーバには何種類もある。筑波大学教育用計算機システムで使っている WWWサーバのプログラムの名前は、Apache 。
http://www.domain/dir1/file1.htmlクライアントは、URL のうちのホスト部分を抜きだし、これと標準の 80ポート番号(80)を使って、TCP/IP のコネクションを張る。
クライアントは、HTTP で次のような要求を送る。
GET /dir1/file1.html HTTP/1.0(![]()
![]()
/usr/local/apache/htdocs/上の GET 要求に相当するファイルは、次のファイルになります。
/usr/local/apache/htdocs/dir1/file1.html
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>
200
は、エラーがなく成功したという意味。
アクセスされた日付、データの日付、データの型と長さが現れる。
Content-Type:
が text/html
ならば、
HTML で書かれたページの意味。
インラインイメージなら、
なら image/gif
や image/jpeg
になる。
このような情報は、情報そのものではなくて、情報に関する情報という意味で メタ情報(メタデータ)という。
空行の後に、実際のデータが続く。
例:ブラウザは、テキストしか受け付けない。
GET /dir1/file1.html HTTP/1.0例:日本語と英語が受け入れ可能であるAccept: text/*
![]()
GET /dir1/file1.html HTTP/1.0例:ブラウザの種類は、MozillaAccept-Language: Japanese, en
![]()
GET /dir1/file1.html HTTP/1.0User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; ja-JP; rv:1.7.3) Gecko/20040910
![]()
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トラブルが起きた時には、このログを見て原因を探る
サーバ icho (OS は Unix) に接続してログインする。
人間とコンピュータの対話方法 以下にあるいくつかの命令を試す。
終了は、exit 。
% exit![]()
% less /usr/local/apache/htdocs/index.html![]()
http://www.ipe.tsukuba.ac.jp/
を開く。
/usr/local/apache/logs/access_log
というファイルにためられる。
次のようにして観察する。
http://www.ipe.tsukuba.ac.jp/ のページは、サーバ (icho) 上の
/usr/local/apache/htdocs/ 以下にある。次のようにして観察する。
% exit![]()
% tail -f /usr/local/apache/logs/access_log![]()
http://www.ipe.tsukuba.ac.jp/
を開く。
余裕があれば、/usr/local/apache/logs/error_log も観察しなさい。
% exit![]()
% telnet www.ipe.tsukuba.ac.jp 80![]()
GET /index.html HTTP/1.0(![]()
![]()
Windows 2000 のコマンドプロンプトの中で telnet コマンドを使う方法。
set local_echoset codeset Japanese EUC
![]()
open www.ipe.tsukuba.ac.jp 80![]()
GET /index.html HTTP/1.0(![]()
![]()
z:\>nslookup>exit
z:\>
記号 > が出ている時には、nslookup プログラム特有の命令が使 える。
z:\>nslookup名前サーバを切替えてみる>set type=ns
>ipe.tsukuba.ac.jp
![]()
z:\>nslookup>server 130.158.65.2
>ipe.tsukuba.ac.jp
>server 130.158.65.3
>ipe.tsukuba.ac.jp
![]()