OSI参照モデルを紐解いていこう ー第7層(アプリケーション層) ②DNSのプロトコル
はじめに
皆さん、こんにちは。ネットワークスペシャリストの左門です。本連載では、難しいネットワークを、身近な事例に置き換えながらわかりやすくお伝えしていきます。
第9回では、第7層(アプリケーション層)の1つ目の代表的なプロトコルとして、メールのプロトコルを説明しました。最終回の今回は、アプリケーション層(第7層)の2つ目のプロトコルとして、DNSプロトコルを説明します。DNSは、インターネット通信には欠かせない重要なプロトコルです。
短期的でも
人間が覚えられる数字は7つ程度
コンビニへ買い物に行くとき、母が「マヨネーズを切らしてるから、買ってきて」と言い、父が「缶チューハイ買ってきて、お駄賃あげるから」と言いました。私がコンビニから帰ってくると、マヨネーズを買い忘れています。お駄賃にウキウキして缶チューハイは買いましたが、母からのマヨネーズの依頼は完全に忘れ去られていたのです。このように、(私だけかもしれませんが)人間の記憶能力というのは、たかが知れています。
アメリカの心理学者ジョージ・ミラー氏が発表した「マジカル ナンバー7±2 (The Magical Number Seven, Plus or Minus Two)」という有名な論文があります。これは、人間が短期的に覚えられる数は7個程度(5〜9個)というものです。例えば、電話番号は03-1234-xxxxのように10桁ですが、メモをせずに一気に覚えることは簡単ではありません。もちろん、長期的であれば記憶することはさらに難しくなります。
第6回で「『住所』に該当するものが『IPアドレス』」とお伝えしました。企業はホームページをWebサーバに公開したり、InstagramやYahoo! Japanなどの各種アプリケーションもWebサーバに公開します。しかし、そのWebサーバのアドレスがIPアドレスのままhttps://203.0.113.123だったらどうでしょう。非常にわかりにくいですよね。
そこで、Webサーバーを識別するための覚えやすい名前を付けます。これが、example.co.jpなどのドメイン名です。そして、ドメイン名とIPアドレスを変換してくれる仕組みがDNS(Domain Name System)です。また、ドメイン名とIPアドレスの対応情報を管理しているサーバーをDNSサーバーと言います。
ドメイン名とは
ドメイン名(domain name)は、インターネットにおいて個人や組織を識別するための名前です。「domain」には「領地」という意味があるので、IPアドレスと同様にインターネット上の「住所」と考えてもらって良いでしょう。IPアドレスは数字の羅列ですから、我々人間が覚えるのは大変です。そこで、わかりやすい名前としてドメイン名を使用します。例えば、Yahoo! JAPANであれば「yahoo.co.jp」というドメイン名が、トヨタ自動車であれば「toyota.jp」というドメイン名が使われています。
ドメイン名は、Webページの閲覧に使用されるURLやメールアドレスなど、人間がIPアドレスを指定する必要があるものに活用されます。ドメイン名の例として「impress.co.jp」を詳しく説明します。これは、企業名(株式会社インプレス)を意味する「impress」と企業(corporation)を意味する「co」、日本(Japan)を意味する「jp」の3つが「.」(ドット)で区切られて表記されています。
ホスト名とFQDN
ドメイン名に関連して、ホスト名とFQDNという言葉も覚えておきましょう。
⚫︎ホスト名
ホスト名は、個々のコンピューターに付けられた名前です。例えば、Webサーバーにはwww(world wide webの意味)、DNSサーバーにはns(nameserverの意味)、メールサーバーにはmx(mail exchangerの意味)などの名前を付けます。
具体例を紹介します。インターネットでYahoo! JAPANのトップページを見ると、Webブラウザのアドレス入力欄には「www.yahoo.co.jp」という文字列が含まれているはずです。「yahoo.co.jp」はドメイン名と呼ばれますが「www」はドメイン名ではありません。ホスト名と呼ばれます。
Webサーバーのホスト名はwwwと決められているわけではありません。Webサーバーを公開する側が任意に付けることができます。例えば、Yahoo! JAPAN(www.yahoo.co.jp)の例で言うとWebサーバーのホスト名は「www」ですが、ヤフオク! (auctions.yahoo.co.jp)のWebサーバーのホスト名は「auctions」です。
●FQDN(Fully Qualified Domain)
FQDN(Fully Qualified Domain:完全修飾ドメイン名)は、ホスト名とドメイン名をつなげたもののことです。例えば、Webサーバーのホスト名は「www」に「yahoo.co.jp」というドメインを付与した「www.yahoo.co.jp」がFQDNです。ドメイン名にホスト名を加えることで、ドメイン内で運用されているサーバーを1つに特定できます(さらに言うと、IPアドレスも1つに決まります)。
それでは、これまで解説してきたドメイン名とホスト名、FQDNの関係を下図で紹介します。
DNSによる名前解決の仕組み
前述したとおり、DNSはIPアドレスとドメイン名(正確にはドメイン名およびホスト名)を相互に変換する仕組みです。その際、ドメイン名からIPアドレスを求めることを名前解決と言います。
DNSによる名前解決の仕組みを詳しく説明しましょう。DNSサーバーに名前解決の問い合わせを行うクライアントのソフトウェアをリゾルバと言います。ちなみに、リゾルブ(resolve)は「解決する」という意味です。
例えば、クライアント(リゾルバ)がDNSサーバーに「www.example.comのIPアドレスは何ですか?」と問い合わせる場合(下図❶)、問い合わせを受けたDNSサーバーは自身が持っている「ドメインの情報とIPアドレスの対応」を基に「203.0.113.123です」と答えます(下図❷)。
皆さんが利用するWindowsなどのOSには、標準でリゾルバが組み込まれています。また、リゾルバは自動で名前解決をしてくれますので、利用者がこの手続きを意識する必要はありません。
コンテンツDNSサーバーとキャッシュDNSサーバー
DNSサーバーには、コンテンツDNSサーバーとキャッシュDNSサーバーがあります。コンテンツDNSサーバーは、自身でドメイン情報(原本)を管理し、クライアントからの問い合わせに答えます。一方のキャッシュDNSサーバーは、自身ではドメイン情報(原本)を管理しません。クライアントからの問い合わせを受け付け、代わりにコンテンツDNSサーバーに問い合わせて、その結果をクライアントに返します。このとき、問い合わせた結果は一定期間、履歴データ(キャッシュと言います)として保持します。そうすることで、再度クライアントから同じドメインに関する問い合わせが来たときに、即座に結果を返すことができます。つまり、名前解決に要する時間を短縮できます。
下図は、PCがwww.impress.co.jpのIPアドレスをDNSサーバーに問い合わせ、名前解決をするまでの流れです。PCがキャッシュDNSサーバーに問い合わせを行うと(図❶)、キャッシュDNSサーバーは自身のキャッシュに情報が保持されているかを調べます。キャッシュがある場合は、それを用いてPCからの問い合わせに即座に回答します(図❷)。しかし、キャッシュがない場合、キャッシュDNSサーバーはPCに代わってインプレスのコンテンツDNSサーバーにwww.impress.co.jpのIPアドレスを問い合わせます(図❸)。そして、コンテンツDNSサーバーから受け取った結果をPCに返します(図❹)。
DNSサーバーとリソースレコード
DNSサーバーは、ドメイン名(およびホスト名)とIPアドレスの対応情報をファイルで管理しています。このファイルに登録された1件1件の情報のことをリソースレコードと言います。リソースレコードにはAレコード、MXレコード、NSレコードなど、いくつかの種類があります。
例えば、Aレコードには、ホスト名(またはFQDN)から、それに対応したIPアドレスを割り出すための情報が登録されています。MXレコードは、そのドメインにおけるメールの配送先となるメールサーバーのホスト名(またはFQDN)の情報を持っており、NSレコードはそのドメインにおけるDNSサーバーのホスト名(またはFQDN)の情報を持っています。
具体的なイメージを膨らませてもらうために、DNSサーバーが管理しているファイルの一部を紹介します。下図の例では、ドメイン名が「example.com」で「www」というホスト名に対するIPアドレスは203.0.113.123であるとします。このホスト名に対するAレコードを見てみましょう。
ここで、DNSの代表的なリソースレコードを下表にまとめます。
レコードの種類 | 説明 | 具体的な記載例 |
---|---|---|
A(Address)レコード | ホスト名に対するIPアドレスを記述する | 「www」というホスト名に対するIPアドレスが203.0.113.123である www IN A 203.0.113.123 |
NSレコード | ドメインのDNSサーバーのホスト名を記述する | 「example.com」というドメインのDNSサーバーのホスト名が「ns」である example.com. IN NS ns. example.com. |
MXレコード | ドメイン宛てのメールの配送先となるメールサーバーのホスト名を記述する | 「example.com」というドメインには「mx1」「mx2」というホスト名を持つ2つのメールサーバーがあり、優先度の高さを「MX」に続く数値で指定する(数字が小さい方が優先度は高い) example.com. IN MX 10 mx1. example.com. example.com. IN MX 20 mx2. example.com. |
おわりに
全10回にわたって「イチから学ぶネットワーク入門」として、OSI参照モデルを第1層(物理層)から順に第7層(アプリケーション層)までを、初学者の皆さんにもわかりやすくお伝えしてきました。今回が最終回となります。この連載では、多くの内容を拙書「ストーリーで学ぶ ネットワークの基本」(インプレス)を流用しながら記載してきました。ネットワークをさらに勉強されたい方は、ぜひ本書を手に取っていただけると幸いです。
最後に私からのメッセージです。
本連載では、身近な事例に置き換えながらネットワークを解説してきました。ただ、毎回良いネタを準備できるわけでもなく、やや苦し紛れな内容も多々ありました。それにも関わらず、全10回の連載をお届けできたのは、ひとえにThink IT編集部の皆さん、そして、この記事をお読みいただいた読者の皆さまのおかげです。
私自身は日々締め切りに追われ、少しはゆっくり過ごしたいな、そう思うこともあります。しかし、読者の皆さまに喜んでいただけるというのは、何よりも尊い喜びです。今後も皆さまの役に立ち、そして喜んでいただける原稿を書いていきたいと思います。
これまでお付き合いいただき、本当にありがとうございました。
左⾨ ⾄峰 著 |
ストーリーで学ぶ ネットワークの基本実務にひもづく基本知識が身に付く!
|