アドレス (例えば http://park12.wakwak.com・・・) を入力したり、リンクをクリックするとホームページが表示されます。 リンクにはアドレスが埋め込まれていますから、クリックはそのアドレスを指定した事になります。
ユーザーがアドレス入力やリンクのクリックを行うと、ブラウザ(ホームページを表示するソフト)はインターネットのどこかに保存されているファイル(ホームページ用のデータ)を要求&取得し、そのファイルの内容に基づいてホームページを描画しています。
ファイルの保存場所は web サーバーと呼ばれるコンピューターであることが一般的です。
ブラウザがどんなファイルを要求したかは、ブラウザのアドレス欄を見ると判ります。
このページを見ている時、ブラウザのアドレス欄は下記のようになります。
http://park12.wakwak.com/~eslab/pcmemo/dns/index.html
この記述はそれぞれ次のような意味があります。
http | ホームページ用データ送受信の通信規約 ( hyper text transfer protocol ) |
: | 通信規約の指定部とアドレス指定部の区切り |
// | 指定のアドレスがネットワーク上にあることを示しています。 |
park12 | web サービスを提供しているサーバー (ホストともいいます) の名称 |
wakwak.com | サーバーが属しているドメイン |
/~eslab/pcmemo/dns/ | サーバー内のディレクトリ (フォルダーと同義) |
index.html | ファイル名 |
ブラウザは wakwak.com ドメインにある park12 (web サーバー) との間で http の規則に基づいて通信を行い、/~eslab/pcmemo/dns/ ディレクトリにある index.html ファイルを要求し、その結果を表示しているのです。
インターネットにおける端末 (コンピューター等) 同士の通信は、自分のIPアドレスと相手のIPアドレスを明記した要求文 (あるいは回答文) を、インターネット上に流すという方法で行われます。
お使いのブラウザも、次のような通信(要求)文をインターネット上に送信していた筈です。
・・・・・, 192.168.1.234, 219.103.130.73, 49228, 80,
GET /~eslab/pcmemo/dns/index.heml, HTTP 1.1, ・・・・・
この通信文の概略は次の通りです。
192.168.1.234 | 送信元(自分)のIPアドレス(環境で異なります) |
219.103.130.73 | 宛先(park12.wakwak.com)のIPアドレス |
49228 | 受信(待ち受け)用のポート番号 (適宜変化します) |
80 | 宛先のポート番号 80 はwebサーバーの標準ポート番号 |
GET /~eslab/pcmemo/dns/index.heml | 指定ファイルの送信要求 |
HTTP 1.1 | 通信に使用するhttpのバージョン |
送り出された通信文は、ルーター等の中継機器が宛先のIPアドレスを読み取って次の中継機器へ転送する、いわゆるバケツリレーが繰り返されて宛先のホストまで届きます。
要求文を受信したwebサーバーは、要求されたホームページ用ファイルを送り返します。この時、送信元アドレスには自身(park12.wakwak.com)のIPアドレス、宛先のアドレスには要求文にあった送信元IPアドレスが入ります。
インターネット上に送り出された通信(回答)文は、要求文の時と同様にルーター等の中継機器によるバケツリレーが行われて要求元に届きます。
実際の通信においては、1ページ分のデータであっても複数回のやり取りが行われ、そのすべての通信文に双方のIPアドレスがセットされています。インターネット上で通信を行うには、相手のIPアドレスを知ることが大前提なのです。
ホスト名をIPアドレスに変換(検索)することを名前解決といいます。DNSは名前解決の優れた仕組みですが、初めから存在していた訳ではありません。
現在のようなインターネットが普及する前は、様々な形態のネットワークが提唱・実験されていました。その中でもっとも成功したのがパケット通信方式を用いたARPAnet(アーパネット:Advanced Research Projects Agency Network)です。ARPAnetは学術研究と技術検証用のネットワークで、1969年に4拠点を結んで運用が開始されました。
その頃のARPAnetの名前解決には「HOSTS.TXT」という、ホスト名とIPアドレスの対応表が使用されていて、全ユーザーが同じHOSTS.TXTをもっていることが大前提でした。
このファイルの名残りはwindowsでは %Systemroot%\System32\drivers\etc\hosts, UNIXやLinuxでは /etc/hosts として残っています。
HOSTS.TXTは次のような形式の、1行の中にIPアドレスとホスト名を対応させたテキストファイルです。
127.0.0.1 | localhost |
219.103.130.73 | eslab |
ユーザーがホスト名を入力すると、アプリケーションがHOSTS.TXTをスキャンして対応するIPアドレスを検出し、相手ホストとの通信を行う方式でした。
HOSTS.TXTはSRI-NIC(Stanford Research Institute's Network Information Center)が一元管理して公開していたので、ホストの新設や変更があった場合は、ホスト名とIPアドレスをSRI-NICに通知してHOSTS.TXTの更新を依頼します。またユーザーは最新のHOSTS.TXTをSRI-NICから入手(ダウンロード)して、自分のホストに反映していました。
当初は順調でしたが、ホスト数の増大に伴って様々な問題が顕在化してきました。
ホスト名やIPアドレスの管理(重複の回避)が困難になると同時に、肥大化したHOSTS.TXTのダウンロードがネットワークを圧迫し始めたのです。
HOSTS.TXTに代わる新たな名前解決の仕組み(システム)が必要となり、次の要件を満たす新しいシステムの研究が始まります。
- 大量のホスト名を重複することなく登録可能。
- 特定のホストを一意に識別できる。
- 管理が容易。
- 誰でも参照可能。
- ネットワークを圧迫しない。
HOSTS.TXTの反省を踏まえて開発されたDNSは、ホスト名の命名規則にドメインという階層構造を導入し、一極集中だった管理方式を改めて分散管理としています。DNSの基本概念は1982年に発表されましたが、導入が始まったのは1985年の事でした。
DNS (
Domain Name System) は、ホスト名(ドメイン名)とIPアドレス双方向の変換(検索)を行い、データの信頼性を損なうことなく変化に柔軟に対応できる仕組み(管理システム)として設計されています。
バージョン6(IPv6)への移行期にあります。( IPv5は研究用に予約されていて一般には使われていません )
DNSも例外なくその影響下にありますが、ここではIPv4を基調に説明しIPv6に関する部分は割愛しています。