DNSの仕組み

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

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

このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/ipe/inet-2005/2005-12-13/
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/
http://www.ipe.tsukuba.ac.jp/~yshinjo/

■復習

TCP/IPの基本的な考え方

■捕捉

■今日の重要な話

■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 の表示は、この領域の分割に似て いる。

A、B、2つの集合があると、一般には、次の4つに分割される。

  1. Aにしか含まれない部分
  2. AとBの両方に含まれる部分
  3. Bにしか含まれない部分
  4. AにもBにも含まれる部分
領域(木構造)の場合、完全に含まれるか、無関係かのどちらかになる。

集合の関係を説明した図。一般的な場合と領域の場合。

図3 2つの集合の関係

◆字下げによる木の表現

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

筑波大学

◆区切り文字入り表記

「情報学類」という節を、次のように表記する。

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

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

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

区切り文字としては、「.」(点)、「/」(スラッシュ)、「\」(バック スラッシュ)、「¥」(円記号)などがよく使われる。単語を並べる時に、木 の根に近いほうから書く流儀と遠い方から書く流儀がある。

◆木の例

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

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

◆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で考えると、次のようになる。

◆ドメイン名の種類

ccTLD (country code Top Level Domain)
ISO (国際標準化機構, International Standardization Organization ) が定めた2文字による国別コード(country code)) (ISO 3166) を使う。日本の国別コードは、jp
gTLD (generic Top Level Domain)
ccTLD 以外。伝統的: .com,. edu,.gov,.net,.org,.mil、 新しい: .aero, .biz, .coop, .info, .museum, .name, .pro。 http://www.icann.org/tlds/

◆日本のドメイン名

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

◆汎用JPドメイン名

jp の下に、上のような属性を持たない第2レベルドメイン名 (SLD:Second Level Domain)も使えるようになった。

汎用JPドメイン名(JPNIC)

◆ICANN

ICANN(Internet Corporation for Assigned Names and Numbers)

インターネットにおけるドメイン名や IPアドレスを調整する ための非営利法人。1998年に設立。

以前は、IANA(Internet Assigned Numbers Authority)。

2000年に始めての理事選挙があった。

◆逆引き

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。

◆ドメインの数

2005年1月ごろの名の統計
ドメイン名
.com3335万
.net532万
.org330万
.biz108万
.info333万
.jp64万
.jp は地域型含む。

第二レベルのドメインの数。ホストの数はもっと多い。

http://jpinfo.jp/stats/ JPドメイン名に関する統計 by JPRS http://www.zooknic.com/Domains/counts.html by Zooknic.

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

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

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

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

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

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

■ディレクトリの木

コンピュータのディレクトリ(フォルダ)は、全体では 木構造(tree structure) になっている。階層化ディレクトリ(hierarchical directory)と呼ばれるこ ともある。

図9 ファイルとディレクトリの木

図9 ファイルとディレクトリの木

ファイルは、葉(leaf)になる。ディレクトリは、中間節になる(可能性があ る)。特殊な節として、根(root)がある。これを、ルート・ディレクトリ (root directory)という。

図10 自然の木

図10 自然の木

◆パス名

ファイルの名前の表現には、「パス名」がよくつかわれる。パス (path)とい うのは、道の意味である。パス名では、どの道を通ればよいかの道順を示すこ とでファイルの名前を表現する。

木構造では、節、または、枝(道)に名前がついている。ファイル名は、区切り 文字で区切られた、節、または、枝の名前の並びになる。ファイルの名前を表 現する時の区切り文字としては、次のものがよく使われる。

/
Unix, URL
\
Windows, MS-DOS
:
Macintosh
ファイル名で「.」は、木構造の区切りとしては使われない。

パス名の例:

◆絶対パス名と相対パス名

パス名には、 次の2種類がある。

絶対パス名 ( absolute path name )
絶対パス名というのは、ディレクトリの木の根(ルート・ディレクトリ) から出発する道順
相対パス名 ( relative path name ) 現在着目しているディレクトリ(カレント・ワーキング・ディレクトリ) から出発する道順
例:絶対パス名 /usr/bin/awk
  1. ルート・ディレクトリから出発する
  2. usrという枝へ進む
  3. binという枝に進む
  4. 最後に (awk)という枝に進む。
よって、/usr/bin/awk は、こういう手順で見つかるファイルを意味する。

例:相対パス名 bin/awk (カレント・ワーキング・ディレクトリが /usrの時)

  1. カレント・ワーキング・ディレクトリから出発する
  2. binという枝に進む
  3. 最後に (awk)という枝に進む。

◆ホーム・ディレクトリ

複数の人が使うコンピュータで、個人のファイルを保存する 時の出発点となるディレクトリを、ホーム・ディレクトリと呼ぶ。

たとえば、icho という名前のコンピュータで、 新城のホーム・ディレクトリは、 絶対パス名では、/home1/yshinjo/ である。

■URL

World Wide Web では、他のデータへの参照を実現するためにURL (Uniform Resource Locator) という形式を使う。次に、URL の例を示す。

http://www.tsukuba.ac.jp/education/college.html

http
HyperText Transfer Protocol。WWWのデータを保持しているプログラム と、WWWを表示するプログラムの間でデータをやり取りするときの形式を定め た約束。
www.tsukuba.ac.jp
そのデータを持っているコンピュータの名前。
/education/college.html
そのコンピュータの中での資源の名前(ファイルの名前)。最後の .html は、その資源がHTML で書かれている事を表わしている。

◆URL中の2つの木

URL には、2つの木構造の表記方法が混じっている。

◆URLを間違えた時/URLが変更された時

2種類のエラー 長い URL のどの部分が怪しいかを区別できるようにする。

エラーが出た時には、木構造で親を探してみる。

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

■Unix(Linux)での日本語

■実習

◆DNS 名前サーバとの対話

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

nslookup

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

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

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

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

電源を入れた直後に出るメニューで、Windows ではなくてUnix (Linux) を選 ぶ。

同じユーザ名とパスワードで使える状態になる。

コマンドで操作してみる。端末を開く。


who
date
cal
bc (終了は ^D (コントロールキーを押しながら D キーを押す))

look 英単語

電源を切る方法。

Unix 入門(古い)

◆目の前のコンピュータで Unix (Linux) の IP アドレスを調べる

端末で次のように打つ

/sbin/ifconfig -a

スペースは大事。

◆ping コマンドで接続を確認する(Unix)

端末で次のように打つ。

ping 130.158.66.10

自発的止まらないことがあるので、^C (コントロールキーを押しながら C キーを押す))で 強制終了する。

130.158.66.10 の他に、隣のコンピュータの IP アドレスを指定してみなさい。 ケーブルを抜く/電源を落としてから、同じ実験をしなさい。

◆Linux で VMware を実行する

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

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

VMware 用語

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

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

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

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

VMware を終了するには、今日の設定(vm10)の場合、いきなりPower Off して よい。(普通のPCではやってはいけない。)

2回目以降は、次のようにタイプしても VMware を実行することができる。

% vmware & [←]
この場合、設定を選ぶメニューが表示されるので、vm10 を選ぶ。

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

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

◆接続を確認する

ホスト側(ran)で端末を開き、VMware を実行する前と実行後に次のように打つ。
% 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 コマンドが見つからない時(command not found)には、 /sbin/ifconfig と打つ。

確認する。

% ifconfig eth0 [←]
(または ifconfig -a)
ping コマンドで確認する。
% ping 192.168.153.20 [←]
% ping 192.168.153.10 [←]
% ping 192.168.153.1 [←]
ping の代りに、WWW ブラウザ(Mozilla) を使って次の URL にアクセスする方 法もある。

◆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 のパケットが表示されることを確認する。

telnet の代りに、WWW ブラウザ(Mozilla) を使って次の URL にアクセスする 方法もある。


↑[もどる] ←[12月6日] ・[12月13日] →[12月13日]
Last updated: 2005/12/13 15:08:17
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>