【NET技術.016】DNSのプロトコル①
佐藤@IT雑貨屋です。
インターネットでは通信を行うためにIPアドレスが必要です。しかしIPアドレスは数字の羅列情報であり、人が認知するのにはかなり難があります。そこでアプリケーション層レベルでアドレス(文字列)をIPアドレスに変換する仕組みとしてDNSが開発されました。
◆DNSの役割
TCP/IP通信で実際にパケットに付与するアドレスはIPアドレスです。しかしIPアドレスは数字の羅列である事から人が記憶するのは困難です。IPv6の場合には128bitもありますので、より困難な状況となります。
そこで覚えやすい識別子として、最初にホスト名が考案されました。これはコンピュータ内に、IPアドレスとホスト名を紐づけるhostsというファイルを置き、それを参照することで、ホスト名からIPアドレスを参照するというものです。しかしそれでインターネット上の全てのホスト名とIPアドレスを紐づける事が難しい事から、ホスト名とIPアドレスを集中的に管理する必要が出てきました。その仕組みがDNS(Domain Name System)です。
◆ドメイン名
ドメイン名とは、組織を識別するための階層的な名前です。例としてitzakkayaのドメインを想定してみます。
itzakkaya.com
この場合、最初の「itzakkaya」が固有のドメイン名となります。次の「com」は主に企業やサービスを示すドメインである事を示しますが、世の中には「.co」という企業を指すもの、「.gov」という政府機関を指すもの等があります。また「.jp」というのは日本国内のドメインである事を示します。以前には企業で「.co.jp」というドメイン名も多くありましたが、近年では維持管理費の問題から「.jp」だけを使う企業も多くあります。
また組織内に複数のホストが存在する場合には、ホスト名+ドメイン名で表わす事で、組織毎に一意の名前を付ける事が出来ます。
www.itzakkaya.com(ホストがウェブサーバ)
mail.itzakkaya.com(ホストがメールサーバ)
dns.itzakkaya.com(ホストがDNSサーバ)
このホスト名とドメイン名を含んだ名前をFQDN(Fully Qualified Domain Name)と言います。またこのドメイン名にアルファベットや数字以外の感じやアラビア文字などを使えるようにする仕組みを国際ドメイン名(IDN:Internationalized Domain Name)といいます。日本語の場合には日本語ドメイン名と呼ばれることもあります。
◆DNSの階層構造
DNSではドメインの階層毎に管理するDNSサーバが存在します。頂点にルートがあり、このルートサーバは世界に13個存在します。頂点の次に第一レベルのドメインであるTLD(Top Level Domain)があり、「jp(日本)」「com(主にアメリカ企業など)」「org(非営利団体など)」が存在します。
TLDの下には第二レベル、第三レベルと階層構造でドメインが存在します。そしてドメインごとにDNSサーバ(ネームサーバ)があり、それぞれがドメインを管理しています。ドメインと同じようにDNSサーバも階層構造になっていて、順に問い合わせを行っています。
◆DNS問い合わせの流れ
実際のDNSによる最初の問い合わせは以下の様になります。
①クライアントは、事前に設定してあるかかりつけDNSキャッシュサーバに問い合わせ
を行う。
②かかりつけDNSキャッシュサーバは、ルートDNSサーバに問い合わせを行う
➂ルートDNSサーバは、一階層下のDNSサーバのIPアドレスを返答する
④かかりつけDNSキャッシュサーバは、返答されたDNSサーバに問い合わせを行う
⑤一階層下のDNSサーバは、一階層下のDNSサーバのIPアドレスを返答する
⑥かかりつけDNSキャッシュサーバは、返答されたDNSサーバに問い合わせを行う
⑦一階層下のDNSサーバは、一階層下のDNSサーバのIPアドレスを返答する
⑧かかりつけDNSキャッシュサーバは、返答されたDNSサーバに問い合わせを行う
⑨一階層下のDNSサーバは、FQDNのIPアドレスを返答する
⑩かかりつけDNSキャッシュサーバはクライアントにIPアドレスを返答する
一度問い合わせたデータは一定期間、かかりつけのDNSキャッシュサーバのキャッシュに保存されるので、2回目以降は必要な部分のみ問い合わせを行います。