本文とサイドメニューへジャンプするためのナビゲーションスキップです。

スタートアップガイド

J-Net21 中小企業ビジネス支援サイト

  • J-Net21とは
  • スタートアップガイド
中小機構
  • メルマガ登録
  • RSS一覧
  • お問い合わせ

HOME > 製品・技術を開発する > デジ・ステーション

デジ・ステーション


初級ネットワーク講座
第12回 DNSの仕組みとホスティングサービス

インターネット上のサーバにアクセスする際には、"recruit.co.jp"のようなドメイン名や、"www"のようなホスト名を用いる。しかしIPパケットには、「あて先IPアドレス」はあるが、「あて先ドメイン名」や「あて先ホスト名」なるものはない。そこで今回は、「ホスト名」や「ドメイン名」を「IPアドレス」に置き換える、「名前解決」の仕組み「DNS」について解説する。また、この仕組みを利用して、データセンタのリソースの一部をユーザに貸し出す「ホスティングサービス」についても解説する。

1 DNSの仕組み

1-1 URLの構造

インターネットを利用してWebサーバにアクセスする場合、ブラウザのアドレスにURLを入力する。URLは、Uniform Resource Locatorの略で、RFC1738で規定されている。
 URLの全体構造は、":"をはさんで前半の「スキーム部(scheme)」と、後半の「スキーム仕様部(scheme-specific-part)」に分かれる。

<scheme> : <scheme-specific-part>

<scheme> は、通信相手とやり取りする手段・方法を表す。
  Webであればhttpファイル、データ転送であればftp、メール送信であればmailtoなどがある。
<scheme-specific-part> は、通信に必要な情報を示す。スキームによって構文仕様は異なる。
  通信相手のホスト名、リソース名、ユーザ名、パスワードなどがある。

例えば、「初級ネットワーク講座 第11回」の内容を閲覧するためのURLは、「http://www.keyman.or.jp/3w/prd/87/30002687/」で、その内容は次のように構成されている。

<scheme> → [http]
<scheme-specific-part> → [//www.keyman.or.jp./3w/prd/87/30002687/]

つまり、通信相手とは[http]という手段(プロトコル)でやり取りしたい。その必要情報は[//www.keyman.or.jp./3w/prd/87/30002687/]である、ということだ。

<scheme>が[http]の場合、<scheme-specific-part>の構文は、以下の通りとなる。

 // <host> : <port> / <path> ? <searchpart>

<host>  → www.keyman.or.jp
<port>  → 省略
<path>  → 3w/prd/87/30002687/
<searchpart> → 省略

<host>は、通信相手のホストを識別する。[www.keyman.or.jp]は、さらにホスト名である[www]とドメイン名である[keyman.or.jp]に分けられる。このように、ホスト名とドメイン名を組み合わせたものをFQDN(Fully Qualified Domain Name:完全修飾ドメイン名)と呼ぶ。FQDNは、インターネット上で一意である。
 <path>は、そのホスト内にあるリソース(ファイル)の場所を示す。

1-2 IPパケットの構造

次に、IPパケットの構造を見てみよう(図1)。IPパケットは、大きくIPヘッダとIPデータに分けられる。IPヘッダには、IPパケットを転送制御するために数々のフィールドが用意されている。そのうちのIPアドレスに関しては送信元とあて先がある。

図1 IPパケットの構造

 図1 IPパケットの構造


1-3 DNSとは?

IPアドレスは、通信相手のホストを一意に識別するためのものである。同じくFQDNも、通信相手のホストを一意に識別するためのものである。試しに、ブラウザにURL「http://www.keyman.or.jp./3w/prd/87/30002687/」のかわりに、「http://133.194.234.20/3w/prd/87/30002687/」を入力してみると、まったく同じページが表示される。これは、[133.194.234.20]が、FQDN[www.keyman.or.jp.]のIPアドレスに相当するからである。
 一般のユーザには、数字が連続するIPアドレスよりも、[www.keyman.or.jp.]のような意味のある文字列の方が覚えやすいため、このようにURLとしてFQDNを利用しているのである。
 また、何らかの理由によりサーバのホストが変更された場合、IPアドレスを変更する必要が生じる。しかし、IPアドレスとFQDNの対応づけが更新されれば、FQDNは名前を変更しなくてもそのまま使うことができる。つまり、FQDNは、絶対的なアドレスとして利用できる。

図2 ipconfig -allを実行

図2 ipconfig -allを実行(クリックすると大きな画像が表示されます。)

しかし、IPパケットをみると、「あて先IPアドレス」はあれど、「あて先ドメイン名」や「あて先ホスト名」「あて先FQDN」なるものはない。これでは、URL「http://www.keyman.or.jp./3w/prd/87/30002687/」が入力された時に、FQDN[www.keyman.or.jp.]をIPアドレスに置き替えなければ、パケットが送出できない。
 そこでDNS(Domain Name System)サーバに問い合わせて、IPアドレスを得る必要がある。

それでは、実際にパケットをキャプチャする前に、[ipconfig -all]コマンドでネットワークの設定情報を見てみよう。パソコンのIPアドレスが[192.168.0.101]、DNSサーバのIPアドレスが[192.168.0.254]に設定されていることがわかる(図2)。


次に、ブラウザを開いてアドレスにURL「http://www.keyman.or.jp./3w/prd/87/30002687/」を入力し、「初級ネットワーク講座 第11回」の画面を表示させたところで、パケットキャプチャツールを使ってパケットを見てみよう(図3)。

図3 パケットキャプチャの結果

図3 パケットキャプチャの結果(クリックすると大きな画像が表示されます。)

パケット1 [192.168.0.101]パソコン
  [192.168.0.254]DNSサーバ DNS照会

パケット2 [192.168.0.254]DNSサーバ
  [192.168.0.101]パソコン DNS応答

パケット3以降、[192.168.0.101]パソコンと
  [133.194.234.20]との間での WWWによる通信


図4 パケット1とパケット2の詳細

図4 パケット1とパケット2の詳細(クリックすると大きな画像が表示されます。)

次に、パケット1とパケット2の内容を詳しく見てみよう(図4)。


パケット1の「質問セクション」で、
  【照会名】www.keyman.or.jp.


となっており、パソコンからDNSサーバに[www.keyman.or.jp.]について照会していることがわかる。

 パケット2の「回答セクション」で、
  【ドメイン名】www.keyman.or.jp.
  【IPアドレス】133.194.234.20


となっており、DNSサーバからパソコンに[www.keyman.or.jp.]のIPアドレスが[133.194.234.20]であると回答していることがわかる。


1-4 DNSクライアントとDNSサーバのやり取り

DNSクライアントはFQDNを照会し、DNSサーバはFQDNを元にIPアドレスなどの情報を検索して回答する。これを「正引き」という。また、IPアドレスを元にFQDNの情報を検索し回答することもできる。これを「逆引き」という。
 さらに、DNSクライアント内でDNSサーバに情報照会するプログラムのことを「リゾルバ(resolver)」と呼ぶ。

DNSサーバは、インターネット上に無数にある。それらのDNSサーバすべてが、インターネット上にあるすべてのFQDNとIPアドレスの対応関係を保持しているわけではない。というのも、保持するためのデータ領域、更新のためのパケットのやり取りによるネットワークの負荷、検索効率などを考慮すると、それは効率的とはいえないからだ。
 図5に示すように、DNSサーバ群は階層構造になっており、DNSサーバ同士で連携を取って検索を行っている。DNSサーバ群は、世界で一番大きな分散データベースと呼ばれている。

図5 DNSサーバ群の階層構造

   図5 DNSサーバ群の階層構造


ルートサーバは、ルートDNSサーバとも呼ばれ、DNSサーバ群の頂点にあたり、世界に13個設置されている。1個のルートサーバは、負荷分散やリスク分散のため複数のサーバから構成されている。
 ルートサーバは、第1階層(トップレベルドメイン)を管理するDNSサーバのIPアドレスを管理している。

表1 ルートサーバの内容表2 jp.を管理するDNSサーバの内容

表1 ルートサーバの内容                 表2 jp.を管理するDNSサーバの内容


表3 or.jp.を管理するDNSサーバの内容表4 keymans.or.jp.を管理するDNSサーバ

表3 or.jp.を管理するDNSサーバの内容        表4 keymans.or.jp.を管理するDNSサーバ

コラム:13番目のルートサーバ「M」
 ルートサーバは世界に13個設置されており、それぞれA、B、C・・・、Mという頭文字がつけられている。
 日本が管理しているのは13番目の「M」のルートサーバだ。宗教的な理由などから「13」という数字が不吉とされている国も少なくないが、日本においてはそうではないため、13番目のルートサーバが割り当てられたという風説がある。なお、このルートサーバは村井純氏が率いるWIDEプロジェクトが管理している。
 その他の12のルートサーバのうち、10はアメリカに置かれており、米国陸軍、国防総省、NASAなどが管理している。
 ルートサーバの稼働状況は、こちらのサイト(英語サイト)で確認できる。

それでは、先述の例で、実際にDNSが機能する仕組みを見ていこう。

図7 リゾルバとDNSサーバの仕組み

図7 リゾルバとDNSサーバの仕組み


(1)
パソコン[192.168.0.101]は、DNSサーバ[192.168.0.254]に、FQDN[www.keyman.or.jp.]のIPアドレスを照会(パケット1)
(2)
DNSサーバ[192.168.0.254]は、ルートサーバに[jp.]を管理するDNSサーバのIPアドレスを照会
(3)
ルートサーバは、第1階層(トップレベルドメイン)[jp.]で検索し、[DNSサーバ[192.168.0.254]に[jp.]を管理するDNSサーバのIPアドレスを回答
(4)
DNSサーバ[192.168.0.254]は、[jp.]を管理するDNSサーバに[or.jp.]を管理するDNSサーバのIPアドレスを照会
(5)
[jp.]を管理するDNSサーバは、DNSサーバ[192.168.0.254]に[or.jp.]を管理するDNSサーバのIPアドレスを回答
(6)
DNSサーバ[192.168.0.254]は、[or.jp.]を管理するDNSサーバに[keymans.or.jp.]を管理するDNSサーバのIPアドレスを照会
(7)
[or.jp.]を管理するDNSサーバは、DNSサーバ[192.168.0.254]に[keymans.or.jp.]を管理するDNSサーバのIPアドレスを回答
(8)
DNSサーバ[192.168.0.254]は、[keymans.or.jp.]を管理するDNSサーバに[www.keymans.or.jp.]のIPアドレスを照会
(9)
[keymans.or.jp.]を管理するDNSサーバは、DNSサーバ[192.168.0.254]に[www.keymans.or.jp.]のIPアドレスを回答
(10)
DNSサーバ[192.168.0.254]は、パソコン[192.168.0.101]に、FQDN[www.keyman.or.jp.]のIPアドレスを回答(パケット2)

基本的には、リゾルバから問い合わせを受けたDNSサーバが、第1階層から順に次の階層を管理するDNSサーバのIPアドレスを次々に問い合わせていき、結果的に目的のホストのIPアドレスを知ることができる。よって、リゾルバから問い合わせを受けるDNSサーバは、少なくともルートサーバのIPアドレスを保持していなくてはならない。
 しかし、毎回毎回、第1階層から順に問い合わせていたのでは、ネットワークやDNSサーバに大きな負荷がかかることになる。そこで、リゾルバも含めそれぞれのDNSサーバは、一度調べた「名前」と「IPアドレス」との関連付けを一定時間、記憶している。これをDNSキャッシュという。
 例えば、リゾルバから問い合わせを受けるDNSサーバが「jp.」を管理するDNSサーバのIPアドレス、および「or.jp.」を管理するDNSサーバのIPアドレスをキャッシュしているとしよう。

(1)
パソコン[192.168.0.101]は、DNSサーバ[192.168.0.254]に、FQDN[www.keyman.or.jp.]のIPアドレスを照会(パケット1)ここですでに、「or.jp.」を管理するDNSサーバのIPアドレスがわかっているので直接問い合わせに行く。
(6)
DNSサーバ[192.168.0.254]は、[or.jp.]を管理するDNSサーバに[keymans.or.jp.]を管理するDNSサーバのIPアドレスを照会
(7)
[or.jp.]を管理するDNSサーバは、DNSサーバ[192.168.0.254]に[keymans.or.jp.]を管理するDNSサーバのIPアドレスを回答
(8)
DNSサーバ[192.168.0.254]は、[keymans.or.jp.]を管理するDNSサーバに[www.keymans.or.jp.]のIPアドレスを照会
(9)
[keymans.or.jp.]を管理するDNSサーバは、DNSサーバ[192.168.0.254]に[www.keymans.or.jp.]のIPアドレスを回答
(10)
DNSサーバ[192.168.0.254]は、パソコン[192.168.0.101]に、FQDN[www.keyman.or.jp.]のIPアドレスを回答(パケット2)
コラム:DNSキャッシュもipconfigでわかる!
 パソコン(リゾルバ)のDNSキャッシュを確認したい場合、次のようにipconfigコマンドを実行すれば確認できる。
 
  > ipconfig -displaydns
 
 DNSキャッシュを削除したい場合は、ipconfigコマンドを次のように実行すればよい。
 
  > ipconfig -flushdns
【次号予告】
 「インターネットする」という言葉が一般的に定着してきた。「インターネット」の主な用途は「Webページの閲覧」と「電子メールのやりとり」である。そこで次回は、「Webページの閲覧」のためのプロトコルであるhttpについて説明する。あわせてセッション維持や利用者情報の収集などに使われるクッキーについても説明する。

取材協力 : 株式会社アイテック

掲載日:2009年2月 4日

キーマンズネット

出典元:株式会社リクルート キーマンズネット 2008年10月14日掲載分

検索

このページの先頭へ