ネットワークって。。。#14(IPに関連する技術)
今日は、DNSの話。。。
DNS。。。
Domain Name Systemの略称です。
ネットワークって。。。#3とネットワークって。。。#12でIPアドレスについて書きましたが、皆様がインターネットに接続する時って、IPアドレスを指定したりはしませんよね。
例えば、何かを調べるためにググる時って、
www.google.co.jp
って指定しますよね。
「いやいや、最近は、Siriとかで呼び出すよ」っていう人もいるかも知れませんが。。。
で、このwww.google.co.jpっていう名前と、実際のIPアドレスを結びつける仕組みをDNSっていいます。
DNSの起源(hosts)
接続されているコンピュータにアクセスするのに、IPアドレスを設定してっていうのは、わかりにくいって事で、TCP/IPの世界では、古くからホスト名という識別子が使われてきました。
ホスト名というのは、何かわかりやすい名前をつけて、IPアドレスと結びつけるものです。
具体的には、hostsというファイルに、以下のようなイメージで記載します。
ホスト名 IPアドレス
mickey 192.168.100.10
donald 192.168.100.20
goofy 192.168.100.30
このhostsというファイルは、
UNIXの場合、/etc/hosts
Windowsの場合、C:¥Windows¥system32¥drivers¥etc¥hosts
に格納されています。
まあ、スマホとかに格納されている、電話帳とかみたいなもんですね。
電話をかける時は、電話帳から名前を選んで、かける。。。
おそらく全員の電話番号を覚えていて、電話番号で電話をかける人ってほとんどいませんよね。
インターネットの起源といわれるARPANETというネットワークでは、初めは、hostsファイルでIPアドレスを管理していましたが、インターネットの普及とともに、管理に限界が出ていたようです。
DNSの登場
hostsで管理できなくなった理由のひとつとしては、インターネットが普及するとともに、同じホスト名が出てきたんでしょう。多分。。。
上記hostsのイメージでいえば、mickeyがあちこちに出てきて、どこのmickeyやねん!みたいな話になって。。。笑
同姓同名でも、住所がわかれば特定できますよね。
例えば、
- www.google.co.jp
- www.yahoo.co.jp
のwwwってホスト名に相当するものなんです。
World Wide Webの略で、一般的には、Webサービスを提供するサーバを表します。
日本語に訳すと、
- グーグルのWebサーバ
- ヤフーのWebサーバ
って、どこのWebサーバかが、ちゃんとわかりますよね。
そんな背景があって、DNSは誕生しました。
最近では、気軽に自分でドメインを取得して、サイトを運営する事が可能になりましたね。
ドメイン名の構造
ドメイン名は、今となっては、.comとか、.netとか、更には日本語ドメインとか、柔軟に付けれるようになっていますが、誕生当初は、構造が定型化されていました。
ホスト名.組織名.組織形態.国
って感じで。。。
組織形態は、
- ac:大学
- co:企業
- ed:学校(幼稚園、小中学校、各種学校)
- go:政府機関
- ne:プロバイダ等のネットワークサービス業者
等で分類されています。
例えば、上記の
www.yahoo.co.jp
は、
Webサーバ.ヤフー株式会社.企業.日本
って感じです。
で、ドメインって階層構造(ツリー構造)になっていて、
一番上に、
rootっていうのがあって、
その下にjpとかukとかの国、その下に組織形態。。。
こんな感じです。
言ってみれば、会社の組織構造みたいな感じです。。。
で、構造のそれぞれを管理している、ネームサーバって呼ばれるコンピュータがあって、そこに問い合わせるコンピュータをリゾルバって呼びます。
例えば、www.example.co.jpにアクセスする(問い合わせる)手順は、
まず、自分(リゾルバ)の直近のネームサーバに問い合わせると、
【直近のネームサーバ】
jpを管理しているサーバに聞いてみて
↓
【jpを管理しているネームサーバ】
co.jpを管理しているサーバに聞いてみて
↓
【co.jpを管理しているネームサーバ】
example.co.jpを管理しているサーバに聞いてみて
↓
【example.co.jpを管理しているネームサーバ】
www.example.co.jpのIPアドレスはこれだよ(ようやく回答)
って感じです。
たらい回し状態ですね。
あれっ?
先輩、これって誰に聞いたらいいですか?
【先輩】
社長に聞いてみて
↓
【社長】
その件なら、A部長に聞いてみて
↓
【A部長】
それは、B課長でしょ。聞いてみて
↓
【B課長】
あー、その件ならこういう事だよ(ようやく回答)
やっぱり、会社の組織構造と似ている。。。笑
正引きと逆引き
DNSには、正引きと逆引きっていうのがあって、
という意味で使われています。
前述までは、正引きを前提とした話をしてきましたが、逆引きってどんな時に使うんでしょうか?
例えば、あるWebサーバが外部から何らかの攻撃を受けた場合、、、
Webサーバのログ(記録)には、どのIPアドレスからアクセスがあったのかという情報が残ります。
その際に、IPアドレスからドメインを割り出す事により、犯人を探す手掛かりになったりするのです。
例えば、ある事件で犯人を探すときなんかは、指紋から犯人を割り出したりしますよね。
それと一緒です。。。多分笑
で、この正引きとか逆引きとかの情報を調べるのにnslookupという便利なコマンドがあります。
ドメインをパラメタに設定するとIPアドレスが、IPアドレスをパラメタに設定するとドメインが返ってくるコマンドです。
郵便番号を入れたら住所が表示されたり、住所を入れたら郵便番号が表示されたりするページってよく見ますよね。
あのイメージです。。。
まとめ
- DNSはドメイン名(www.google.co.jp等)とIPアドレスを結びつける仕組みの事。
- 最初は、ホスト名(wwwの部分)のみで管理されていたが、インターネットの普及とともに限界が出てきて、DNSが登場した。
- ドメイン名は、階層構造(ツリー構造)になっていて、後ろに行くほど大きい括り(jp等)になる。
- DNSは階層ごとにドメインを管理するネームサーバが存在し、ネームサーバに問合せをするコンピュータをリゾルバと呼ぶ。
- DNSの問合せ順序は、ドメイン名の後ろ(大きい括り)から順に順番に(たらい回しに)問い合わせていく。
- DNSには正引きと逆引きがあり、それを調べる為のコマンドは、nslookup。
以上です。
最後まで読んでいただき、ありがとうございました。
【参考書籍】