DNSの基本
informationnetworksundergraduatelecture
data/lecture/information/networks/tcp-and-ip-basics.lecture.n.md
1導入
この講義では、DNSが階層的かつ分散的にドメイン名の情報を管理する仕組みを説明する。名前解決に関与するサーバの役割、資源レコード、キャッシュ、DNSが利用するトランスポートを順に確認する。
2階層的で分散的な名前空間
ドメイン名は、www.example.comのようにラベルを階層的に連結した名前である。DNSの名前空間では、最上位にルートがあり、その下にcomなどのトップレベルドメイン、example.comなどの下位ドメインが配置される。
DNSは単一のサーバがすべての情報を管理する方式ではない。名前空間の管理を複数の組織とサーバへ委任する分散型のシステムである。
3資源レコード
DNSが保持する情報の単位を資源レコードという。代表的な種類は次のとおりである。
| 種類 | 役割 |
| A | ドメイン名にIPv4アドレスを対応づける |
AAAA | ドメイン名にIPv6アドレスを対応づける |
CNAME | 別名を正規名に対応づける |
MX | メールを受信するサーバを指定する |
NS | ドメインの権威DNSサーバを指定する |
TXT | 文字列の情報を保持する |
したがって、DNSはドメイン名をIPアドレスへ変換するだけの仕組みではない。アドレスの取得は、A recordまたはAAAA recordを照会する代表的な利用例である。
4リゾルバと権威DNSサーバ
アプリケーションからDNS照会を受け付ける機能をスタブリゾルバという。スタブリゾルバは通常、再帰リゾルバへ照会を依頼する。再帰リゾルバは、必要な回答や委任情報がキャッシュにない場合、ルートDNSサーバからTLDのDNSサーバ、権威DNSサーバへ委任を概念的にたどる。キャッシュされた委任情報があれば、途中の段階から照会を開始できる。
権威DNSサーバは、委任された範囲の名前について正式な資源レコードを提供する。再帰リゾルバは、複数のDNSサーバへの反復的な照会をクライアントに代わって実行し、最終的な回答をクライアントへ返す。
5名前解決とキャッシュ
www.example.comのアドレスを取得する処理は、概念的には次の順序となる。
- アプリケーションがスタブリゾルバへ照会を依頼する。
- スタブリゾルバが再帰リゾルバへ照会する。
- 再帰リゾルバは、有効なキャッシュがあれば、その回答を返す。
- 必要なキャッシュがなければ、ルート、TLD、権威DNSサーバの委任関係をたどって参照先と回答を取得する。キャッシュされた委任情報があれば、その途中から開始する。
- 再帰リゾルバが回答をキャッシュし、スタブリゾルバへ返す。
資源レコードにはTTLが付随する。キャッシュはTTLの有効期間内に回答を再利用し、照会遅延とDNSサーバの負荷を低減する。その一方で、レコードを変更しても、既存のキャッシュが失効するまでは古い情報が使用される可能性がある。
6DNSのトランスポート
DNSの従来型の通信は、通常、ポート53のUDPまたはTCPを使用する。一般的な照会ではUDPが広く使用されるが、UDP応答が切り詰められた場合や、TCPが必要な処理ではTCPを使用する。DoTやDoHは、DNS通信を暗号化する別の方式である。
DNS照会そのものもIPネットワーク上で実行される。したがって、DNSを「TCP/IPより前に実行される独立した処理」と解釈してはならない。
7名前解決からWeb通信へ
URLのホストがドメイン名で表記されている場合、クライアントはDNSによって一つまたは複数のIPアドレスを取得し、通信先を選択する。その後、HTTP/1.1またはHTTP/2ではTCP接続を確立する。HTTP/3はTCPではなく、UDP上のQUICを使用する。IPアドレスを直接指定した場合には、ドメイン名の名前解決を必要としないこともある。
8要点
- DNSは階層的かつ分散的な名前空間と資源レコードの照会システムである。
- 再帰リゾルバは、キャッシュまたは権威DNSサーバなどへの照会から回答を取得する。
- キャッシュはTTLの期間に回答を再利用し、遅延と負荷を低減する。
- DNS通信はIPネットワーク上でUDP、TCP、または暗号化された方式を使用する。
9次に進む講義
data/lecture/information/networks/http-basics.lecture.n.md