ウェブとクライアント/サーバ

[教科書8.2] インターネットのサービスは、クライアント/サーバで実現されているものが多い。 WinnyででてきたP2Pはクライアント/サーバでないサービスの提供形態である。

一般にサーバはクライアントからのサービス要求の記録(ログ)を残している。 例えば、ユーザ情報発信用WWWサーバログなど。 ログの内容は、例えば「アクセス元のIPアドレス、日付、コマンド、結果(200が成功)、クライアントのブラウザの種類、元のURL」など。 (アクセス=読んだり書いたりすること)
授業のページのログをAnalogというツールを使って解析すると レポートのようになる。 同様にユーザ情報発信用WWWサーバのログを解析すると レポートとなる。

アクセス元に応じた情報を返してもらうために、ブラウザはいろいろな情報をウェブサーバに送っている。 http://user.ecc.u-tokyo.ac.jp/~yamaguch/cgi-bin/environment-example2.cgiにアクセスしてみよ。 HTTP_REFERERやREMOTE_ADDRがどのような意味か想像してみよ。 サーバではそれらの情報から何ができるか考えてみよ。

ウェブの場合に、クライアントの要求にサーバが応答する具体的な手順は以下のようになる。

  1. クライアントが、URL(http://user.ecc.u-tokyo.ac.jp/~g99999/index.html)を httpと user.ecc.u-tokyo.ac.jpと /~g99999/index.html に分解する。
  2. クライアントが、ホスト名(user.ecc.u-tokyo.ac.jp)のコンピュータに接続し、通信路を確立する。
  3. その通信路を通してクライアントがhttpプロトコル(通信規約)でファイル(/~g99999/index.html)を要求する。(この要求はサーバに届く)
  4. サーバは要求されたファイルの内容をその通信路を通して送り返す。(これはクライアントに届く)
  5. サーバが通信路を切断する。
  6. クライアントは受け取ったファイルを表示する(内容を解釈してその指示に従って描画する)。

実験してみよう。 URL http://user.ecc.u-tokyo.ac.jp/~yamaguch/index.html にアクセスしてみる。(アクセス=読んだり書いたりすること)

  1. ターミナル を開く。(参考: コマンド入力)
  2. ターミナルで「telnet user.ecc.u-tokyo.ac.jp 80」を入力する。(最後に を押す。以下同様)Connected to...と表示されたらOK。 サーバと通信路が確立した。
  3. ターミナルで「GET /~yamaguch/index.html http/1.0」と入力する。通常の の後にもう一度 を押す。 「HTTP/1.1 200 OK...」など結果の情報が数行表示されて、空行が続いた後、index.htmlの内容が表示され、接続が自動的に切れる。 (httpプロトコルという通信規約)
  4. ファイルindex.htmlの内容はHTMLという言語の形式で書いてある。ブラウザはそれを解釈して表示している。 ブラウザで http://user.ecc.u-tokyo.ac.jp/~yamaguch/index.html を開いてindex.htmlと見て比べてみよう。HTMLというのがどのようなものか感じがつかめるであろう。

上でやったようにターミナルからtelnetで授業のページにアクセスしてみよ。

実験で分かること

  1. httpの部分を間違えると、ブラウザがプロトコル(通信規約)を知らないというエラーとなる。
  2. user.ecc.u-tokyo.ac.jpの部分を間違えると、サーバが見つからないというエラーとなる。
  3. /~yamaguch/index.htmlの部分を間違えると、サーバからファイルが見つからないという応答がある。

実験で出てきたいろいろな要素

WWWと情報発信に従って自分のウェブページを作成してみよ。

情報教育棟のiMac300台によるクラスタ

Googleのサーバの数を調べてみよ。「Google server numbers」などのキーワードを使う。

yamaguch@mail.ecc.u-tokyo.ac.jp
Copyright 2011 Kazunori Yamaguchi 山口和紀@東京大学総合文化研究科