クライアント・サーバ・モデルとキャッシング

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

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

このページは、次の URL にあります。
http://www.hlla.is.tsukuba.ac.jp/~yas/ipe/taiiku-kougi-2002/2002-12-20
あるいは、次のページから手繰っていくこともできます。
http://www.hlla.is.tsukuba.ac.jp/~yas/ipe/
http://www.hlla.is.tsukuba.ac.jp/~yas/index-j.html
http://www.ipe.tsukuba.ac.jp/~yshinjo/

■復習

DNSの仕組み

■今日の重要な話

次の言葉の意味を理解すること。

■目標のレビュー

■クライアントとサーバ

インターネットで通信をプログラムを利用する時、 「クライアント」と「サーバ」という分けて考える。

例:

コンピュータが1台しかない場合、プログラムは1つでよい。通信をする場合 には、プログラム(コンピュータ)が2つになる。そのうちの1つのプログラ ム(またはコンピュータ)を、「クライアント」、もう1つを「サーバ」とい う。

元々の意味

クライアント(client)
サービスを受ける方、顧客
サーバ(server)
サービス(service)を提供する方

図? サービスの授受によるクライアントとサーバの定義

図? サービスの授受によるクライアントとサーバの定義

サービスを提供する方は、1つのプログラム(コンピュータ)で複数の利用者 の面倒をみる。その結果、1台のサーバに複数のクライアントがつながる。

クライアント
一人で使うもの
サーバ
複数人で共有するもの

図? 複数のクライアントによるサーバの共有

図? 複数のクライアントによるサーバの共有

TCP/IP では、通信するプログラムとプログラムの間は、電話で会話をするよ うに通信が行われる。両方同時に話をすることは、(可能ではあるが)あまり 行われない。次のようなことを、繰り返すことになる。

クライアント
先に要求を送る、後で結果を受け取る
サーバ
先に要求を受け取る、後で結果を返す

図? 通信のパタンからみたクライアントとサーバの定義

図? 通信のパタンからみたクライアントとサーバの定義

TCP/IP の通信では、通信を始める前に、まず、通信路を作る作る必要がある。 これは、電話で話をする前に、まず、電話をかける操作を行うことと似ている。
クライアント
電話を掛ける方に相当する
サーバ
電話を待っている方

以上のように、クライアントとサーバは、いろいろな意味で使われる。これら の意味は、多くの場合、一致しているが、一致していないこともある。

◆能動的・受動的

通信を開始するパタンで、コンピュータ、プログラム、人間は、次の2つに分 類される。

能動的(active)
ほっといても自分でメッセージを発信し始める
受動的(passive)、受け身
何か言われると答えるが、自分ではメッセージを発信し始めることはない
クライアントとサーバから作られたシステムは、クライアントが能動的になり、 サーバは、受動的になることが多い。

図? 能動的なクライアントと受動的なサーバ

図? 能動的なクライアントと受動的なサーバ

例:WWWサーバは、WWWクライアントから何か要求が来ない限り、ずっと 黙っている。

コンピュータを使う時には、人間が能動的になり、コンピュータが受動的にな る。

テレビを見ている時には、人間が受動的になり、テレビが能動的になる。

講義形式の授業では、サービスの授受では、教官がサーバで、学生がクライア ントになる。通信の開始の方法では、教官が能動的になり、学生が受動的にな る。

大学以上では、学生は、能動的になることが求められている。

■ファイル・サーバ

Windows 2000 を使っている時、Z: ドライブのデータは、ファイル・サーバに 置かれている。ここにあるファイルは、どのクライアントPCを使っていても、 同じように参照できる。

デスクトップに置いたデータは、ログオン時にサーバからクライアントへコピー される。ログオフ時には、クライアントからサーバへコピーされる。大きなデー タをデスクトップに置くと、ログオンとログオフが遅くなる。

Z: ドライブに置いたデータは、ログオン時/ログオフ時にコピーされない。

■DNS名前サーバとキャッシング

◆分散されたサーバとゾーン

DNS は、世界中に分散された多くの名前サーバが協調しあって、全体として一 つの巨大な名前空間を実現している。

各名前サーバは、ゾーンと呼ばれる、木構造の節のデータを保持する。

1つの名前サーバは、このようなゾーンのいくつかを管理することがある。

図? DNS のドメインとゾーンの関係

DNS のドメインとゾーンの関係

◆名前サーバの動き

図? 図? 名前サーバの動き

図? 名前サーバの動き

例:このクライアントが、「www.u-ust.ac.jp」というドメイ ン名のホストの IP アドレスを調べる。

  1. クライアントの内部にリンクされた リゾルバは、ローカルの名前サーバに、そのドメイン名を送る。
  2. ローカルの名前サーバは、ルート・ドメインの名前サーバに、このドメ イン名を送る。
  3. ルート・ドメインの名前サーバは、自分ではIPアドレスを答えずに代わ りにjp ドメインの名前サーバのIPアドレスを返す。
  4. ローカルの名前サーバは、今度は、それを使ってjpドメインの名前サー バに、ドメイン名を送る。
  5. jpドメインの名前サーバは、自分ではIPアドレスを答えずに代わりに ac.jp ドメインの名前サーバのIPアドレスを返す。
  6. ローカルの名前サーバは、ac.jpドメインの名前サーバに、ドメイン名を 送る。
  7. ac.jpドメインの名前サーバは、自分ではIPアドレスを答えずに代わりに u-ust.ac.jp ドメインの名前サーバのIPアドレスを返す。
  8. ローカルの名前サーバは、u-ust.ac.jpドメインの名前サーバに、ドメ イン名を送る。
  9. u-ust.ac.jpドメインの名前サーバは、そのドメイン名のIPアドレスを 返す。
  10. ローカルの名前サーバは、リゾルバにそのIPアドレスを返す。
ローカルの名前サーバは、答え(IPアドレス)が見つかるまで繰り返し名前サー バに要求を送る。

各ドメインの名前サーバは、単に次の名前サーバを返すだけで、自分で最終的 な答えが見つかるまで繰り返さない。

◆キャッシング

1つのドメイン名をIPアドレスに変換するたびに、該当する名前サーバに要求 を送っていると遅くなる。 ルート・ドメインの名前サーバの負荷が重たくなる。

実際の名前サーバでは、 キャッシング(caching) を行なっていてる。

キャッシングとは、高速化にアクセスできる場所にコピーを持つことである。

一度知った情報は、メモリ中に保存しておき、次に必要になった時には、それ を使う。(他の名前サーバには問い合わせを行なわない)。

◆生存期間

キャッシュ(コピー)を持っていると、元の情報が更新され時に問題が起きる。 そこで、キャッシュには、 生存期間(TTL: time to live) が決められていて、それを過ぎると自動的に捨てられる。

逆に考えると、この期限内では、たとえデータを更新したとしても、古いデー タが参照される。

◆ネガティブ・キャッシュ

ネガティブキャッシュは、「そういう情報が存在しない」ということを示す情 報。

DNS では、「そういう名前が存在しない」という情報もキャッシュとして保存 している。これを保存しないと、存在しない名前をいちいちルート・ドメイン の名前サーバに聞きにいく。

◆資源レコード

DNS では、主にドメイン名を IP アドレスへ変換するが、これは ドメイン名ごとに IP アドレスのデータが定義されていることによる。 このような DNS で扱う1つひとつのデータを、 資源レコード(RR: resource recourd) という。

表? DNSでよく使われる資源レコード

--------------------------------------------------------------------
資源レコード	意味
--------------------------------------------------------------------
A		アドレス
CNAME		正式名
HINFO		ホスト情報
MX		電子メールの送り先
NS		名前サーバ
PTR		ポインタ
SOA		権限開始
--------------------------------------------------------------------

標準(正引き)で引かれるものは、A レコードである。 逆引では、PTR レコードが引かれる。

◆複製(replication)

1つのドメインについて、名前サーバは、普通は必ず2つ以上動作させる。

名前サーバを複数用意しておくと、それらの名前サーバのうちどれか1つでも アクセスできれば、名前解決をすることができる。

名前サーバの種類:

プライマリ(primary)
あるドメインについて最終権限を持っている。世界でひとつだけ。
セカンダリ(secondary)
プライマリのコピー(複製、replication)を持つ。

プライマリの名前サーバは、ファイルからそのゾーンのデータを読み込む。

セカンダリの名前サーバは、プライマリの名前サーバや他のセ カンダリの名前サーバからデータをコピーする。

このコピーのことを ゾーン転送(zone transfer) という。

◆複製管理のパラメタ

ゾーン転送を制御するパラメタは、SOA レコードに含まれている。


----------------------------------------------------------------------
adonis1% nslookup
Default Server:  orchid.jks.is.tsukuba.ac.jp
Address:  130.158.86.241

> set type=soa[←]
> ipe.tsukuba.ac.jp[←]
Server:  130.158.65.2
Address:  130.158.65.2#53

ipe.tsukuba.ac.jp
        origin = keyaki.ipe.tsukuba.ac.jp.
        mail addr = root.keyaki.ipe.tsukuba.ac.jp.
        serial = 2001042001
        refresh = 10800
        retry = 3600
        expire = 3600000
        minimum = 86400
> []
----------------------------------------------------------------------
serial
セカンダリ名前サーバがゾーン転送の時に、データが更新されたかどう かを判定する時に比較される番号。プライマリでデータを更新したら、忘れず に増やさなければならない。
refresh
セカンダリ名前サーバは、ここで示された秒数ごとに、ゾーン転送を行 ないデータを更新する。
retry
リフレッシュしようとした時、転送元の名前サーバが落ちていたら、こ こで示された秒数ごとに再実行する。
expire
ゾーン転送で得たデータを、転送元の名前サーバが落ちていても、ここ で示された秒数は保持する。
minimum ttl
ネガティブキャッシュの生存期間。 (あるいは、レコードの標準の最小生存期間。この間はキャッシャが保持さ れる。(個別のレコードごとにも ttl を設定できる))
ネガティブキャッシュは、「そういう名前が存在しない」ということを示す情 報。

■WWWにおけるクライアントとサーバとキャッシング

◆WWW ブラウザ

WWW ブラウザは、WWW でのクライアントに相当する。 WWW サーバから、データを取り寄せ、表示する。

WWW ブラウザは、基本的には、直接WWWサーバに要求を送る。 WWW サーバ (httpd)は、普通は、ファイルからデータを読み出し、WWWブラウザに返す (図の(1))。

クライアント、Proxy、WWWサーバ、キャッシュ

図? CGIの仕組み

設定によっては、WWW ブラウザは、直接 WWW サーバに要求を送らずに、 WWW Proxy サーバ に要求を送ることがある(図の(2))。

proxy ( プロキシプロクシ ) とは、「代理」という意味。 WWW Proxy は、 WWW ブラウザに代わって、WWW サーバと通信をするプログラ ム。

WWW Proxy は、WWWブラウザから受け取った要求を、WWW サーバに送ります。 WWW サーバから送られた結果は、WWWブラウザに返す。

WWW Proxy の利用目的

◆ブラウザによるキャッシング

キャッシングは、ブラウザのメモリやブラウザが動いているホストのディスク (ファイル)に行なわれることがある。 この場合、WWWブラウザは、WWWサーバに要求を送る前に、まず、メモリやファ イルに保存されていないかをチェックし、あれば、それを使う。

メモリ中のキャッシングは、かなり効くので、普通は使うとよい。

ディスク(ファイル)へのキャッシングは、電話回線のような遅い回線を使っ ている時には、効きくことがあるが、イーサネットのような速い回線に繋がっ ている時には、効かないことが多い。

気が付かない間に見えない所でディスク容量を消費して大事なデータが保存で きなくなることがある。

■キャッシングの意味

空間と時間の交換 得をするのは、同じデータをもう一度使う時だけである。 同じデータを1度しか読まないなら、キャッシングをすると、ディスクに書き 込んだり、余計な中継のオーバーヘッドがあるので、時間的にも損になる。

データ圧縮は、空間的に得をするために、計算時間を犠牲にする。ただし、デー タ圧縮を行うと、通信時間の節約になるので、時間的にも得をすることもある。

キャッシュは、元データが更新されると、古くなる。大学で教えている知識は、 キャッシュと思うこと。

■実習

◆DNS 名前サーバとの対話

Unix (Linux) または、Windows 2000 のコマンドプロンプトから nslookup プログラムを実行する。終了は、exit。

z:\>nslookup
>exit
z:\>

記号 > が出ている時には、nslookup プログラム特有の命令が使 える。

次のドメイン名を打ち、IPアドレスに変換しなさい。

次の IP アドレスを打ち、ドメイン名に変換しなさい。

◆複数の名前サーバ

ipe.tsukuba.ac.jp ドメインの名前サーバが2つあることを確かめる。 NS レコード(Name Server Record)を調べる。
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

◆WWW ブラウザでのキャッシングの設定を確認する

Netscape の場合
  1. 「編集」メニューから「設定」項目を選ぶ
  2. カテゴリーの「詳細」の「+」を選ぶ。
  3. 「詳細」の下の「キャッシュ」を選ぶ。
Internet Explore の場合
  1. 「ツール」メニューから「internet option」項目を選ぶ。
  2. 「インターネット一時ファイル」の「設定」ボタンを押す。
キャッシュを使うと、本当に得をするのか。
↑[もどる] ←[12月13日] ・[12月20日] →[1月10日]
Last updated: 2003/01/09 22:03:18
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>