计算机网络-应用层协议4(DNS)

1.DNS能够提供的服务

DNS是:①一个由分层的DNS服务器实现的分布式数据库;②一个使得主机能够查询分布式数据库的应用层协议。DNS协议运行在UDP之上,使用53号端口。

1.1 主机名到IP地址的转换

考虑当某个主机上的一个浏览器请求URL www.someschool.edu/index.html页面时会发生什么现象。做法如下:

  • 同一台用户主机上运行着DNS应用的客户端。
  • 浏览器从上述URL中抽出主机名www.someschool.edu,并将这台主机名传给DNS应用的客户端。
  • DNS客户向DNS服务器发送一个包含主机名的请求。
  • DNS客户最终会收到一份回答报文,其中含有对应该主机名的IP地址。
  • 一旦浏览器接收来自DNS服务器的该IP地址,它能够向位于该IP地址80端口的HTTP服务器进程发起一个TCP连接。

1.2 主机别名

有着复杂主机名的主机能拥有一个或多个别名。例如一台名为relay.west-coast.enterprise.com的主机可能还拥有两个别名enterprise.com和www.enterprise.com。

1.3 邮件服务器别名

MX记录允许一个机构的Web服务器和邮件服务器使用相同的主机名。

1.4 负载分配

略.

2.DNS工作机理

2.1 分布式、层次数据库

计算机网络-应用层协议4(DNS)

  • 根DNS服务器:较少。
  • *域DNS服务器:(TLD DNS服务器)这些服务器负责*域名如com、org、net、edu和gov以及所有国家的*域名如uk、fr和jp。
  • 权威DNS服务器:在因特网上具有公共可访问主机的每个组织机构必须提供公共可访问的DNS记录,这些记录将这些主机的名字映射为IP地址。
  • 除此之外还有本地DNS服务器,为一个大学、一个系、一个公司或一个居民区服务。
  • DNS服务过程如下:
    计算机网络-应用层协议4(DNS)
    在这个例子中,使用了递归查询迭代查询。从请求主机到本地DNS服务器的查询是递归的,其余查询是迭代的。
    下面的例子的完全递归查询。
    计算机网络-应用层协议4(DNS)

2.2 DNS缓存

当DNS服务器接收到一个DNS回答(包含主机名到IP地址的映射)时,它能将该回答中的信息存储到本地存储器中。当另一个对相同主机名的查询到达该DNS服务器时,该服务器就能快速提供映射信息。

2.3 DNS记录和报文

2.3.1 DNS记录

共同实现DNS分布式数据库的所有DNS服务器存储了资源记录(RR),RR提供了主机名到IP地址的映射。RR是包含以下字段的4元组:
(Name,Value,Type,TTL)
TTL是该记录的生存时间,决定资源记录从缓存中删除的时间。

  • 如果Type=A,则Name是主机名,Value是该主机名对应的IP地址。因此一条类型A的RR提供了标准的映射关系。
  • 如果Type=NS,则Name是个域(如foo.com),而Value是个知道如何获得该域中主机IP地址的权威DNS服务器的主机名。
  • 如果Type=CNAME,则Value是别名为Name的主机对应的规范主机名。该查询能够向查询的主机提供一个主机名对应的规范主机名。
  • 如果Type=MX,则Value是个别名为Name的邮件服务器的别名。

2.3.2 DNS报文

计算机网络-应用层协议4(DNS)

  • 首部区域:前12个字节。标识符用于标识该查询;标志包含多种标志;剩下4个字段指示首部区域后4类区域出现的数量。
  • 问题区域:包含正在进行的查询信息。
  • 回答区域:对最初请求的名字的资源记录RR。
  • 权威区域:包含其它权威服务器的记录。
  • 附加区域:包含其它有帮助的记录,具体如图。