目录
1.引言
通常,识别主机有两种方式:主机名(类似于www.baidu.com www.goole.com等)和IP地址(类似于192.168.1.1)。主机名方便人们记忆,符合人们阅读习惯;而IP地址的定长性和层次结构有利于路由器识别。为了同时满足上述两种需求,我们需要进行主机名到IP地址转换的目录服务(即将主机名映射为IP地址)。
2.DNS是什么
DNS是:
(1) 一个由分层的DNS服务器实现的分布式数据库;
(2)一个使得主机能够查询分布式数据库的应用层协议。
3.DNS提供的服务
- 实现主机名到IP地址转换的目录服务。
- 主机别名:通过DNS服务获取主机别名对应的复杂规范主机名。
- 邮件服务器别名:类似于主机别名。
- 负载分配:假设对于一个拥有很大流量的站点,其可能部署在多个服务器上,它们所有的IP构成一个IP集合,这个IP集合与同一个规范主机名相联系。DNS提供了相应的映射服务,使得不同的客户端请求可以轮流访问各个服务器。
4.其他应用层协议使用DNS的过程:
(1) 同一台用户主机上运行着DNS应用的客户端;
(2)浏览器从URL中抽取主机名(www.someschool.com),将此主机名传送到DNS应用的客户端;
(3)DNS客户端向DNS服务器发送一个包含主机名的请求;
(4)DNS客户端接受到一个回答报文,回答报文中含有主机名对应的IP地址;
(5)浏览器接受到IP地址后,其向位于该IP地址80端口的HTTP服务器进程发起一个TCP连接。
5.集中式DNS服务的缺点:
- 单点故障:如果DNS服务器奔溃,整个因特网陷入瘫痪。
- 通信容量:单个DNS服务器需要处理大数量级的请求。
- 远距离的集中式数据库:需要经过低俗拥挤的链路,其会导致较长的时延。
- 维护成本高:单个DNS服务器需要为所有主机保留记录,数据库庞大,维护成本高。
6.分布式层次式数据库
分布式层次式数据库中,分布式指的是其分布在全世界范围内,层次式指的是其按照层次方式组织。
其按照层次可将DNS服务器划分为三种类型:根DNS服务器、顶级域DNS服务器和权威DNS服务器。
@这里还要提到一个本地域名解析服务器。该服务器不严格属于层级体系。每个ISp有一个本地域名服务器(也叫默认域名解析服务器)。当主机进行DNS查询时,查询被发送到本地域名服务器,其作为代理(proxy),将查询转发给(层次式)域名解析服务器系统。
7.DNS查询方式
(1)迭代查询
- 首先,cis.poly.edu主机向本地DNS服务器发送一个含有gaia.cs.umass.edu主机名的DNS请求报文。
- 本地服务器将报文转发到根DNS服务器。
- 根DNS服务器根据edu前缀向本地DNS服务器返回负责edu的顶级域DNS服务器IP地址列表。
- 根DNS服务器向顶级域DNS服务器(TLD)IP地址之一发送查询报文。
- TLD服务器根据umass.edu返回权威DNS服务器IP地址。
- 根DNS服务器向权威DNS服务器IP地址发送查询报文。
- 权威DNS服务器返回gaia.cs.umass.edu的IP地址作为响应。
- 本地域名服务器向主机返回查询的IP地址。
(2)递归查询
- 首先,cis.poly.edu主机向本地DNS服务器发送一个含有gaia.cs.umass.edu主机名的DNS请求报文。
- 本地服务器将报文转发到根DNS服务器。
- 根DNS服务器根据edu前缀向顶级域DNS服务器(TLD)发送查询报文。
- 顶级域DNS服务器(TLD)向权威DNS服务器发送查询报文。
- 权威DNS服务器向TLD返回查询的IP地址。
- TLD将查询的IP地址返回至根DNS服务器。
- 根DNS服务器将查询结果返回至本地DNS服务器。
- 本地DNS服务器将查询到的IP地址返回至主机。
8.DNS缓存
所谓DNS缓存,是指本地DNS服务器将某个服务器返回的响应信息进行缓存。如果本地DNS服务器缓存了一对主机名/IP,那么当本地DNS服务器再一次遇到相同主机名的查询请求时,其可以直接返回相应的IP地址。
注:由于主机名和IP地址的映射不是永久的,DNS服务器在一段时间后将丢弃缓存信息。
9.DNS记录和报文
DNS记录也称为资源记录(Resource Record)。其格式为一个四元组(name,value,type,TTL),其中TTL为该记录存在时间,Name和value的值取决于Type。
Name | Value | Type | TTL |
主机名 | IP地址 | A | / |
域(如foo.com) | 权威DNS服务器的主机名 | NS | / |
主机别名 | 规范主机名 | CNAME | / |
邮件服务器别名 | 规范邮件服务器名 | MX | / |
DNS协议为查询和回复,两种格式相同。报文格式如下: