DNSの仕組み

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

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

このページは、次の URL にあります。
http://www.hlla.is.tsukuba.ac.jp/~yas/ipe/taiiku-kougi-2002/2002-12-13
あるいは、次のページから手繰っていくこともできます。
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/

■復習

TCP/IPの基本的な考え方

■フィードバック

Q1-1: 仮想的通信路、接続、結合について

A1-1: 通信路の開設参照。

Q1-2: SINETというのはどういうものですか?

A1-2: 学術ネットワーク(学術研究目的に用途が限定されているネットワーク) の1つ。大学(文部科学省系)の組織が多い。筑波大学も加入している。 筑波大学内に、SINET のノード(接続ポイントとなるルータ)がある。 筑波大学は、専用線の代金を払わないで SINET に加入している。 SINETのホームページ へ。

Q1-3: IPv6 は IPv4 に対して上位互換性を持っていないのか

A1-3: IPv4 のアドレスは、32ビット、IPv6 のアドレスは、128 ビットである。 IPv6 と IPv4 の相互接続には、互換アドレス( IPv6 のアドレスで、 128 ビッ トのうち、上位ビット96ビットが 0 のもの) や、IPv4写像アドレス(上位80ビッ ト0, 続く 16 ビット1)で可能になることになっている。 IPv4 のアドレスを大量に持っている所は、既得権益を守るためにいろいろ理 由を付けて移行を遅らせようとしていることがある。

Q1-3: コマンドプロンプトやTelnetはUNIXとは違うものですか?

A1-3: 人間とコンピュータの対話方法参照。

Q1-4: ルータの構造は

A1-4: ネットワークに対する出入口が2つ以上あり、ある入口から入ってきた パケットを他の出口に中継する場合は、ルータになる。どの出口に送り出すか は、パケットの IP アドレスと表(ルーティング・テーブル)を見て判断する。

Q1-5: IP層の意義。IP層は、TCP層に統合できるのか。

A1-5: 中継するルータでは、IP層だけが働く。末端のホスト(たとえば、WWW サーバと WWW が動いているコンピュータ)では、TCP層も働く。働く場所が違 うので、分離してある。

Q1-5: ファミリー用のパソコン(ボタンで切り替わるもの)の仕組みはどうなっ ているか。

A1-5: よくわからないが、ボタンを押すとログオンの操作が自動的に行われる ようになっていると思われる。

その他:後半のお楽しみ

■今日の重要な話

■捕捉

◆通信路の開設

TCP/IP では、プロセスとプロセスが、電話で会話をするように通信が行われ る。普通の電話で人間同士が話をするには、まず電話番号を指定して、話相手 に電話をとってもらわなければならない。TCP/IP においても同様である。 TCP/IPでは、電話を掛ける方をクライアント・プロセス、電話を待つ方をサー バ・プロセスと言いう。

TCP/IPにおいて、プロセス間に形成されたストリーム通信路のことを、計算機 間に張られた物理的な回線に似ていることから、仮想的回線(virtual circuit)とも言う。TCP/IP では、回線を接続する段階では、クライアント・ プロセスとサーバ・プロセスは非対称である。一度仮想回線が接続された後は、 両方のプロセスは、TCP/IPのレベルでは、まったく対称的になる。

TCP/IPにおいてプロセス間に仮想回線を開設するには、IPアドレスとポート番 号が必要である。ポート番号は、同じIPアドレスを持つホスト上で動いている プロセスを区別するために使われる。

以下に、通信路が開設される手順を示す。

  1. サーバ・プロセスがポート番号を指定して、接続要求受付用ポートを作る。 サーバ・プロセスは、クライアント・プロセスからの接続要求を待つ(図3 (a))。(注意:要求受付用ポートでは、データの送受信はできない。)
  2. クライアント・プロセスが通信用ポートを作る。このポートを、サーバ・ プロセスが動いているホストのIPアドレスと、サーバ・プロセスが作った接 続要求受付用ポートのポート番号を使って、接続要求を行う(図3(b))。
  3. 接続要求が受け付けられると、サーバ・プロセスには、新たに通信用ポー トが作られる(図3(c))。これは、特定のクライアントとの通信のために 使われる。

こうして一度通信路が開設されると、クライアントとサーバは、どちらからで もデータを送り始めることができる。

図3(a) TCP/IP通信路の開設(1)

図3(a) TCP/IP通信路の開設(1)

図3(b) TCP/IP通信路の開設(2)

図3(b) TCP/IP通信路の開設(2)

図3(c) TCP/IP通信路の開設(3)

図3(c) TCP/IP通信路の開設(3)

■DNS(Domain Name System)

TCP/IPで通信する時には、通信相手のIPアドレス(32ビットの整数、番号)が 必要になる。IPアドレスは、コンピュータにとって扱いやすいが、人間にとっ て分かりにくい。

人間にとってわかりやすい記号(文字列)を使ったコンピュータの名前から IPアドレスに変換するサービスがあれば便利である。このサービスを、 名前サービス(name service)、 という。 名前サービスを提供するプログラム(プロセス)を、名前サーバという。

名前から名前を指している番号に変換することを 名前解決(name resolution) という。

インターネットで使われている名前サービスは、 DNS(Domain Name System) と呼ばれる。 DNS では、膨大な数のホスト名を含む名前空間を階層的にドメイン(領域)に 分割して管理ている。 この空間の構造は、木構造と呼ばれる。

◆木構造

木構造(tree structure)というのは、コンピュータ・サイエン ス(計算機科学)でよく使われる用語である。分野によっては、同じものを 階層構造(hierarchical structure)という言葉で表現すること が好まれる。ドイツ語語源の、ヒエラルヒー(Hierarchie)という言葉が使われ ることもある。

木構造の例を、大学の組織を使って説明する(図1)。

木構造という名前は、本物の木が、一度枝分かれした後は決して交わらないこ とに似ていることによる。ある節から別の節までの道が2通り以上あるは、グ ラフ構造と呼ばれる。

図1 大学組織に見られる木構造

図1 大学組織に見られる木構造

図1では、筑波大学と書いてある所が木の根にあたる。根からは、何本かの 学群の枝が出ている。このように、コンピュータ・サイエンスでは、木の根を 上に書く習慣がある。第二学群の節には、日本語日本文化学類、生物学類など の子の節がある。第二学群の親は、筑波大学である。

たとえば「情報学類」、「健康・スポーツ教育主専攻」の場合、次のように記述する。

筑波大学第三学群情報学類
筑波大学体育専門学群健康・スポーツ教育主専攻

コンピュータの中で、文字列(文字の並び)で木構造上の位置を表現する時に は、節が分かりやすくために、はっきりと区切りを入れて表現することがよく 行われる。

筑波大学.第三学群.情報学類
筑波大学/第三学群/情報学類
情報学類.第三学群.筑波大学

区切り文字としては、「.」(点)や「/」(スラッシュ)がよく使われる。 並べる時に、木の根に近いほうから書く流儀と遠い方から書く流儀がある。

住所の表記も、木構造である。

日本国.茨城県.つくば市.天王台

図1に示されている木構造は、また図2のように、「領域(domain)」を分割 するような見方もできる。木構造の場合には、領域の境界線が交わることがな い。

図2 大学組織に見られる木構造(領域的な見方)

図2 大学組織に見られる木構造(領域的な見方)

Windows の画面や、Macintosh の Finder の表示は、この領域の分割に似て いる。

◆字下げによる木の表現

木構造を字下げで表すことがある。

筑波大学

◆木の例

コンピュータでは、次のような場所で木構造が使われている。

コンピュータ以外では、次のような場所で木構造が使われている。

◆DNSの木構造

DNS(Domain Name System)のドメインとは、 膨大な数のコンピュータの名前を含む名前空間を階層的にドメイン (領域)に分割していることを意味する。

図3 名前空間のドメインへの分割

図3 名前空間のドメインへの分割

この空間の構造は、木構造としても見ることができる。

図4 名前空間の木構造としての見方

図4 名前空間の木構造としての見方

たとえば、次のような名前を考える。
host1.is.u-ust.ac.jp
このように、インターネットでのコンピュータの名前は、「.」 で区切られた文字列(文字の並び)である。この文字列で使える文字は、アル ファベット(大文字も小文字も同じだが普通は小文字だけが使われる)と数字、 ハイフン(マイナス)である。

host1.is.u-ust.ac.jp」を 図4で考えると、次のようになる。

host1.is.u-ust.ac.jp」を 図3で考えると、次のようになる。

根の直下は、ISO (国際標準化機構, International Standardization Organization ) が定めた2文字による国別コード(country code)が使われて いる。ただし、歴史的な理由により、 アメリカを中心として .com, .edu, . gov, .net, .org, .mil などが使われている。日本の国別コードは、 jp である。jp の下には、次のようなドメインがある。

ac
学校関係(主に大学)、学術研究機関
ad
ネットワーク管理、JPNICの会員
co
会社
ed
児童、生徒などの教育・育成を行う組織。
go
政府機関、国立の施設
gr
任意団体
ne
インターネット接続サービス・プロバイダ
or
法律に基づく団体
都道府県の名前
地方自治体、個人。

注意:acやadなどの属性を持たないドメイン名も許されるようになった。 .jp と .com の競争のため。

汎用 JP ドメイン名 http://www.nic.ad.jp/dotjp/

逆引き

DNSでは、主に名前をIPアドレスへ変換するサービスが使われる。 逆にIPアドレスから名前を引くことを逆引きという。

普通の引き方を強調する時には正引きということもある。

逆引きには、in-addr.arpa という特殊なドメイン名を引くこと。

例:


12.34.56.78	(数字は、全て 10 進数)

78.56.34.12.in-addr.arpa
in-addr.arpa ドメインの下に、IP アドレスを8ビットずつ区切り 4 桁の 10 進数で表した時の数を上位から下位の順に並べる。

◆DNSができるまで

初期のインターネットは、コンピュータの名前(ホスト名)は、 フラットな名前空間が使われていた。

問題

1986年、3100の公式名と6500の別名。

1990年、6400の公式名。DNS に以降。この時点で、137,000。

しかし、.com は、2002年12月ごろ 2200万。全体 3700万の60%をしめる。 (http://www.domainstats.com/)

.jp は、49万個登録されされている。

JINIC/JP ドメイン名に関する統計
http://www.nic.ad.jp/ja/stat/dom/index.html
)

◆新しいドメイン

2000年11月16日に新しく7つのトップ・レベル・ドメインが作られた。 ICANN New TLD Program http://www.icann.org/tlds/

◆オルタネート・ルート問題

インターネットのドメイン名の根は、1つしかない。 13個のサーバにコピーが世界各地にある。

もし、別の根の情報を持つサーバがあれば、どうなるのか。

オルタネート・ルート(alternate roots)。

◆ルート・サーバに対する攻撃

2002年10月、13個あるルート・サーバが攻撃にあった。

■人間とコンピュータの対話方法

人間の意思をコンピュータに伝えるには、次のような方法がある。
  1. マウス(ポインティング・デバイス)のクリック、ダブルクリック、ドラッ グなどの操作を使ってメニューやボタンを選ぶ。
  2. キーボードでいくつかの文字を打ち込む。最後にリターン・キーを押すと、コ ンピュータは反応す。
  3. キーボードで1文字だけ打つ。リターン・キーを押さなくても、コンピュータ は応答す。
マウスを使う方法は、人間にとってわかりやすい。キーボードを使う方法 では、人間の意思を効率的にコンピュータに伝えることができる。ただし、 このためには、人間がキーボードの配列を覚える必要がある。

同じコンピュータでも、どのプログラムが動いているかによって、上のどの方 法が使えるかが変化する。また同じプログラムでも、局面に応じて上のどの方 法が有効が違うことがある。初期のコンピュータと比較して、最近のコンピュー タは、マウスだけで操作できる部分が大きくなってきている。しかし、電子メー ルを打ったり、文書を書いたりする局面では、キーボードを中心に使う方が、 マウスとキーボードの間での手の移動が少なくなるので、効率がよい。

次のような状態の時に、2の状態になる。

◆シェル

シェルとは、オペレーティング・システムの構成要素の1つである。シェルは、 オペレーティング・システムの中心部分を貝殻のように包みむプログラムであ る。シェルは、人間とコンピュータが対話(interaction)をする時に重要な 機能を果たす。

Windows では、Explorer という名前のプログラムがシェルに相当する。 Macintosh OS では、Finder という名前のプログラムがシェルに相当する。 Unix (Linuxを含む) では、sh, csh, bash, tcsh, zsh などさまざまな種類の シェルを使うことができるようになっている。X ウインドウを使っている状態 (マウスが使える状態)では、ウインドウ・マネジャと呼ばれるプログラムも、 シェルとしての働きがある。

◆シェルの実行と終了

X ウインドウで端末(ktermを含む)を実行したり、TeraTerm 等の遠隔ログイン のプログラムでサーバに接続すると、tcsh が動いている状態になっている。

tcsh が動いている時には、コンピュータの画面には、「ran10」のような記号 が表示される。この記号は、tcsh が人間に対して、コマンド(command、命令) の打込みをうながしている(prompt)印である。この状態で、キーボードからコ マンド名(命令の名前)を打ち込み、最後にリターン・キー(Enter, [←])を打つと、tcsh がそれを受け取り、実行する。ここでコマンド名は、 多くの場合、プログラムの名前(プログラムが保存されているファイルの名前) である。

以下の説明では、プロンプトが「% 」であるものとする。(設定で変更するこ ともできる。)

tcsh を終了するには、プロンプトに対して、「exit HM_CR()」と打つ。

----------------------------------------------------------------------
% exit [←]
----------------------------------------------------------------------

◆コマンド名、オプション、引数

シェル(コマンド・モードの画面)を操作するには、次のような形式で文字を 打ち込み、最後にリターン(Enter, [←])を打つ。
----------------------------------------------------------------------
% コマンド名 オプション1 オプション2 ... 引数1 引数2 .. [←]
----------------------------------------------------------------------

コマンド名に続く オプション(option)とは、コマンドの動きを少し変えるた めの文字列(文字の並び)である。オプションは、一般には付けても付けなく てもコマンドの働きとしては成り立つ。引数(ひきすう、argument,parameter) は、コマンドの種類によっては、必ず必要となるものである。ただし、オプショ ンと引数の区別は、必ずしも厳密ではなく、混同して使われることもある。 (例:必須のオプション)

コマンド名やオプションや引数は、空白で区切る。空白の有無で、まったく動 作が変る。

たとえば、次の行は、「whoという名前のコマンドを、オプションも引数も無 しで実行する」という意味する。

----------------------------------------------------------------------
% who  [←]
----------------------------------------------------------------------

◆同時実行

tcsh で、伝統的な Unix のコマンドを使っている場合、プログラムの実行結 果が、同じ端末のウィンドウの中に文字として表示される。しかし、netscape のように、X Window の機能を使って別のウィンドウに結果を表示するプログ ラムもある。そのようなプログラムを実行する時には、次のように打つとよい。
----------------------------------------------------------------------
% コマンド名 オプション1 オプション2 ... 引数1 引数2 ..  & [←]
% [←]
----------------------------------------------------------------------
このように、行末に「&」を打ち、リターン・キーを打つ。 こうすると、実行したプログラムが動いている間も、「% 」に対して別のコマ ンドを与えることができる。

◆単純なコマンド

このページでは、安全で、使い方が簡単なコマンドをいくつか紹介する。安全 とは、間違った操作をしたとしても、ファイルが無くなるといったことが起き る心配がないという意味する。

ls, ls -l
ファイル名の一覧の表示
w, whodo, who
ログインしている人の一覧の表示
ps, ps -l
プロセスの一覧の表示
cal, cal 2002, cal 12 2002
カレンダーの表示
date
今日の日付の表示
look spelling
英単語の検索

■実習

◆DNS 名前サーバとの対話

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

nslookup

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

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

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

◆目の前のコンピュータで Unix (Linux) を走らせる

◆Linux で VMware を実行する

VMware は、パソコンの中にパソコンを作り出すプログラム。

仮想計算機(Virtual Machine):ハードウェアには存在しないが、実際の計算機 (コンピュータ)と同じように機械語命令セット、メモリ、入出力など機能をソ フトウェア的に実現したもの。

VMware 用語

ホスト
もともと動いていたシステム
ゲスト
VMware の中で動いてるシステム

VMware を実行するには、まず、パソコンを Linux で実行する。 端末を開き、シェルに対して次の命令を打ち込む。

----------------------------------------------------------------------
% ~s015374/vm [←]
----------------------------------------------------------------------
s015374 は、TA の鈴木さんのログイン名である。~s015374 で、鈴木さんのホー ム・ディレクトリを意味する。~s015374/vm で、鈴木さんのホーム・ディレク トリにある vm という名前のファイルに入っているプログラムが実行される。

一度 VMware の画面に入り込むとマウスが取られて抜けられなくなる。抜ける には、画面の左下の表示に従う。~s015374/vm の場合、Alt+Control+Shift の 3つのキーを左手で押してから、右手で Esc キーを押すとよい。

VMware を終了するには、今日の所は、いきなりPower Off してよい。

◆ゲスト(vm10)にログイン

VMware の画面で、login: に対してUnix の システム管理者(root)としてログ インする。
vm10 login: root
Password: (WWWには示していない)

◆接続を確認する

ホスト側(ran)で端末を開き、次のように打つ。
% ping 192.168.153.10 [←]
% ping 192.168.153.1 [←]
% ping 192.168.153.20 [←]
ゲスト側(vm10)にログインして、次のように打つ。
% ping 192.168.153.10 [←]
% ping 192.168.153.1 [←]
% ping 192.168.153.20 [←]
ping コマンドは、止まらないので、^C で強制終了する。 強制終了は ^C (コントロールキーを押しながら C キーを押す)。

注意:IPアドレスを変更するまで、192.168.153.20 は使えないはず。

◆IPアドレスの変更

ゲスト(vm10)の IP アドレスを変更する。
% ifconfig eth0 192.168.153.20 up [←]
確認する。
% ifconfig eth0 [←]
(または ifconfig -a)
ping コマンドで確認する。
% ping 192.168.153.20 [←]
% ping 192.168.153.10 [←]
% ping 192.168.153.1 [←]

◆tcpdump

vm10 で tcpdump コマンドを実行する。
% tcpdump [←]

または

% tcpdump -x (詳しい内容を 16進数で表示) [←]
この状態で、ホスト側から vm10 に対して telnet で接続する。
% telnet 192.168.153.10 [←]
vm10 login: user1[←]
Password: (WWWには示していない)

または
% telnet 192.168.153.20 [←]
vm10 login: user1[←]
Password: (WWWには示していない)
telnet でキーを打つたびに、tcpdump のパケットが表示されることを確認する。

◆課題2 目標の設定

この講義で、各自の目標を設定しなさい。

例:

よい目標とは、次のようなものである。 このような目標を考えて、次の講義の時間(2002年12月20日)までに、クラスの メーリング・リストで発表しなさい。電子メールには、次のような情報を含め なさい。
  1. 名前(漢字)、学籍番号、学類、学年
  2. 課題のタイトル(1行、40文字以内)
  3. 課題の内容(10行〜20行、400文〜800字)。何をどこまで 達成したいか。今どこまでできて、どこまで伸ばしたいか。
電子メールの宛先と題名は、次のようにすること。

To: ipe-inet-2002-announce@top.is.tsukuba.ac.jp
Subject: Report2: Challenge

締め切りは、2002年12月20日金曜日15:15とする。授業が始まる「前」に出すこ と。授業中に設定した課題について、レビューを行う。


↑[もどる] ←[12月06日] ・[12月13日] →[12月20日]
Last updated: 2003/01/09 23:17:30
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>