TCP/IP学习笔记:DNS

概述

DNS:Domain Name System,域名系统。它是:

  1. 一个由分层的DNS服务器(DNS Server)实现的分布式数据库;
  2. 一个使得主机能够查询分布式数据库的应用层协议。

运行在UDP之上,使用53号端口

它提供的服务:

  1. 主机名到IP地址转换的目录服务
  2. 主机别名。有着复杂主机名的主机能拥有一个或多个别名。复杂主机名也称为规范主机名。如果存在主机别名,主机别名比规范主机名更加容易记忆。应用程序可以调用DNS来获得主机别名对应的规范主机名以及主机的IP地址。
  3. 邮件服务器别名。电子邮件应用程序可以调用DNS,对提供的主机名别名(如yahoo.com)进行解析,已获得该主机的规范主机名(如relay1.west-coast.hotmail.com)及其IP地址。
  4. 负载分配。DNS也用在冗余的服务器(如冗余的Web服务器)之间进行负载分配。繁忙的站点被冗余分布在多台服务器上,每台服务器均运行在不同的端系统上,每个都有着不同的IP地址。由于这些冗余的Web服务器,一个IP地址集合因此与同一个规范主机名相联系。DNS数据库中存储着这些IP地址集合。当客户对映射到某地址集合的名字发出一个DNS请求时,该服务器用IP地址的整个集合进行响应,但在每个回答中循环这些地址次序。因为客户通常总是向IP地址排在最前面的服务器发送HTTP请求报文,所以DNS就在所有这些冗余的Web服务器之间循环分配了负载。

域名空间


图源:《TCP/IP详解 卷1:协议》

DNS的分布式、层次数据库

大致说来,在DNS服务器的层次结构中有3种类型的DNS服务器:

  • 根DNS服务器:提供TLD服务器的IP地址。
  • 顶级域名(Top-Level-Domain, TLD)DNS服务器:提供权威DNS服务器的IP地址。
  • 权威DNS服务器:在因特网上具有公共可访问主机(如Web服务器和邮件服务器)的每个组织机构必须提供公共可访问的DNS记录,这些记录将这些主机的名字映射为IP地址。一个组织机构的权威DNS服务器收藏了这些DNS记录。

还有一类重要的DNS服务器,严格而言它不属于DNS服务器的层次结构,但它对DNS层次结构至关重要。这一类DNS服务器是本地DNS服务器。每个ISP(如一个居民区的ISP或一个机构的ISP)都有一台本地DNS服务器(也叫默认名字服务器)。当主机与某个ISP连接时,该ISP提供一台主机的IP地址,该主机具有一台或多台其本地DNS服务器的IP地址(通常通过DHCP)。主机的本地DNS服务器通常“临近”本主机:对某机构ISP而言,本地DNS服务器可能就与主机在同一局域网中;对于某居民区ISP来说,本地DNS服务器通常与主机相隔不超过几台路由器。当主机发出DNS请求时,该请求被发往本地DNS服务器,它起着代理的作用,并将该请求转发到DNS服务器层次结构中

查询分为递归查询迭代查询

(具体例子见 《计算机网络:自顶向下方法(原书第7版)》P86-88)

DNS缓存

在一个请求链中,当某DNS服务器接收一个DNS回答(如包含某主机名到IP地址的映射)时,它能将映射缓存在本地存储器中。由于主机和主机名与IP地址间的映射不是永久的,所以DNS服务器在一段时间后(通常设置为两天)将丢弃缓存的信息。

本地DNS服务器也能够缓存TLD服务器的IP地址,因而允许本地DNS绕过查询链中的根DNS服务器。事实上,因为缓存,除了少数DNS查询以外,根服务器基本都被绕过了。

DNS记录

共同实现DNS分布式数据库的所有DNS服务器存储了资源记录(Resource Record,RR),RR提供了主机名到IP地址的映射。资源记录是一个包含了以下字段的4元组:

(Name, Value, Type, TTL)
  • TTL

    该记录的生存时间,它决定了资源记录应当从缓存中删除的时间。

  • Name、Value、Type

    • 若Type=A,则Name是主机名,Value是该主机名对应的IP地址。该类型的资源记录提供了标准的主机名到IP地址的映射。如(relay1.bar.foo.com, 145.37.93.126, A)
    • 若Type=NS,则Name是个域(如foo.com),而Value是个知道如何获得该域中主机IP地址的权威DNS服务器的主机名。这个记录用于沿着查询链来路由DNS查询。如(foo.com, dns.foo.com, NS)
    • 若Type=CNAME,则Value是别名为Name的主机对应的规范主机名。该记录能够向查询的主机提供一个主机名对应的规范主机名,例如(foo.com, relay1.bar.foo.com, CNAME)
    • 若Type=MX,则Value是个别名为Name的邮件服务器的规范主机名。如(foo.com, mail.bar.foo.com, MX)通过使用MX记录,一个公司的邮件服务器和其他服务器(如Web服务器)可以使用相同的别名。为了获得邮件服务器的规范主机名,DNS客户应当请求一条MX记录;而为了获得其他服务器的规范主机名,DNS客户应当请求CNAME记录。

参考资料

《计算机网络:自顶向下方法(原书第7版)》P83-92

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×