DNS
DNS(Domain Name System)とは, ドメイン名をIPアドレスに自動的に変換するアプリケーション層のプロトコルである.
DNSの仕組みにより, 覚えにくいIPアドレスではなく, ローマ字でURLを入力してWebサイトにアクセスしたり, ローマ字でメールアドレスを入力してメール送信ができるようになっている.
具体的には, GoogleのWebサイトにアクセスする際に, "http://172.217.25.238"ではなく, "http://google.com"のように入力してアクセスできるようになっている.
ドメイン名の種類
ドメイン名とは, コンピュータを識別する名称のことである.
ドメイン名はホスト名や組織名を識別するために階層構造になっており, 英字が.(ピリオド)で繋がれて表記される.
下図のように, ドメイン名の右側から, トップレベルドメイン(TLD), セカンドレベルドメイン(SLD), サードレベルドメイン, フォースレベルドメイン(ホスト名)と続いている.
また, "www"などのホスト名を省略せずに記述した形式(例: www.google.com)のことを, FQDN(Fully Qualified Domain Name)と呼ぶ.
ドメインレベル | 説明 | 例 |
---|---|---|
トップレベルドメイン | 国, 地域, 商用か否かなどを表すドメインとなっている. | jp(日本), fm(ミクロネシア), com(商用) |
セカンドレベルドメイン | 組織の種類を表すドメインとなっていることが多い(TLDによりこのポリシーは異なる). | co(一般企業), ac(教育機関), go(政府機関) |
サードレベルドメイン | 具体的な企業名や組織名を表すドメインとなっていることが多い(TLDによりこのポリシーは異なる). | yahoo(ヤフー), keio(慶應義塾), ntt(NTT) |
フォースレベルドメイン | ホスト名とも呼ばれる. 一般的にWebサーバであれば"www", FTPサーバであれば"ftp"とされる. |
- |
ドメインの階層構造
ドメインは階層構造(ツリー構造)となっている.
具体的には, ドメインの頂点にはルートドメインが存在し, ルートドメイン配下にTLD, その下にSLDというような構成になっている.
DNSの構成
DNSはDNSサーバとリゾルバによって構成される.
DNSサーバはそのドメインのドメイン名とIPアドレスの対応表と, その下位に存在するDNSサーバのIPアドレスを管理している.
また, ドメイン名とIPアドレスが対応付けられた表のことをゾーン情報と呼ぶ.
DNSサーバは各階層の各ドメイン毎に複数存在し, ルートドメインを管理するルートDNSサーバは世界中に13組存在する.
リゾルバはDNSサーバに問い合わせを行うホスト又はソフトウェアのことを指す.
構成要素 | 役割 | 使用される機器 |
---|---|---|
DNSサーバ | ドメイン名とIPアドレスの対応表及び下位のDNSサーバのIPアドレスを管理するホスト又はソフトウェアのことである. 各階層の各ドメイン毎に複数存在する. |
Windowsサーバ, Linuxサーバなど |
リゾルバ | DNSサーバに問い合わせを行うホスト又はソフトウェアのことである. DNSクライアントとも呼ばれる. |
PCなど |
また, 各ドメインに存在するDNSサーバは耐障害性を考慮して複数のDNSサーバにより構成される.
基本的には, ゾーン情報のマスターデータを管理するプライマリDNSサーバと, バックアップとなる1台以上のセカンダリDNSサーバにより構成される.
プライマリDNSサーバとセカンダリDNSサーバが同じゾーン情報を共有するために, プライマリDNSサーバはセカンダリDNSサーバに定期的にゾーン情報を転送して同期を取っており, これをゾーン転送と呼ぶ.
例えば, yahoo.co.jpのDNSで, プライマリDNSサーバにn1.yahoo.co.jp, セカンダリDNSサーバにn2.yahoo.co.jp, n3.yahoo.co.jp, n4.yahoo.co.jpがあるとする.
もし, n1.yahoo.co.jpのDNSサーバに障害が発生したとしても, n1はn2, n3, n4とゾーン情報を同期しているため, yahoo.co.jpドメインは問題なく名前解決される.
ちなみに, セキュリティの観点から, ゾーン転送は同一ドメイン内のDNSサーバ以外とは行わないのが基本となっている.
DNSのパケット
リゾルバがDNSサーバに対して行う名前解決には, UDPポート番号53番が使用される.
一方, DNSサーバ間でゾーン情報の転送を行う場合は, TCPポート番号53番が使用される.
ちなみに, ゾーン情報を転送しない通信においても, 512バイトを超える場合はUDPではなくTCPが使用される.
名前解決
Webブラウザで"http://www.cisco.com/"と入力すると, リゾルバのキャッシュを調べ, 無ければそのPCで指定しているDNSサーバに問い合わせる.
さらに, 指定したDNSサーバのゾーン情報にもキャッシュにも対応表が無かった場合, ルートDNSサーバに問い合わせ, 通知が返される.
同じような流れで問い合わせと通知が下図の通り行われる.