DNS:因特网的目录服务

DNS:因特网的目录服务

因特网中主机和人一样可以使用多种方式进行标识,主机的一种标示方法是用他的主机名,但是主机名几乎没有提供任何关于主机在因特网中的位置信息,路由器很难通过主机名来找到主机,因此,主机使用所谓IP地址来进行标识

DNS提供的服务

识别主机有两种方式,主机名和IP地址.人们喜欢便于记忆的主机名标识方式,而路由器则喜欢定长的,有层次结构的IP地址.为了折中,计算机网络里有一种应用专门提供这样的服务,它就是DNS(Domain Name System)域名系统。DNS是:一个有分层的DNS服务器实现的分布式数据库;一个是的主机能够查询分布式数据库的应用层协议.DNS协议运行在UDP之上,使用53号端口

除了主机名到IP地址的转换外,DNS还提供了一些重要的服务:

  • 主机别名
  • 邮件服务器别名
  • 负载分配

DNS工作机理概述

DNS的一个简单的设计是在因特网上只使用一个DNS服务器,该服务器包含所有映射.在这种集中式设计中有一些问题:

  • 单点故障
    如果DNS服务器宕机,整个因特网都会随之瘫痪.
  • 通信容量
    单个DNS服务器不得不处理所有的DNS查询请求.
  • 远距离集中式数据库
    单个服务器不可能"邻近"所有查询用户,请求或者响应可能要通过低速或者拥塞的链路,会导致很大的时延.
  • 维护
    单个服务器必须为所有主机保留记录,不仅中央数据库庞大,还要为每个新添加的主机而频繁的更新.
1.分布式层次性数据库

为了处理扩展性问题,DNS服务器采用层次式组织,并且分布在全世界范围内;大致来说,存在三种DNS服务器:DNS服务器、顶级域DNS服务器和权威DNS服务器.

举例说明,其工作的普遍流程:一个DNS客户端,希望获得www.baidu.com的IP地址,DNS客户端首先和根DNS服务器取得联系,它将返回负责解析顶级域名com的服务器的IP地址(或者其集合),客户将同这些服务器之一取得联系,然后顶级域DNS服务器建返回baidu.com的权威服务器的IP集合,客户端通过与这些服务器之一取得联系,获得www.baidu.com的IP地址。
DNS:因特网的目录服务_第1张图片

  • 根DNS服务器:因特网上有13个根DNS服务器,大部分分布在北美洲,尽管我们可以将这13个根DNS服务器视为单个的服务器,但是每台服务器实际上是一个冗余的计算机网络以提供安全性和可靠性;根DNS服务器提供TLD服务器的IP地址
  • 顶级域(DNS)服务器:对于每个顶级域(如com,org,net)和所有的国家的顶级域,都有TLD服务器.TLD服务器提供权威DNS服务器的IP地址
  • 权威DNS服务器:因特网上,具有公共可访问主机的每个组织机构必须公共可访问的DNS记录,这些记录将主机名映射为IP地址。一个组织的权威DNS服务器收藏了这些DNS记录,多数大学和大公司实现和维护它们自己的基本和辅助(备份)权威DNS服务器;当然,也可以通过付费的方式,将相关的信息插入到其它权威服务器中;
  • 除了上面三种DNS服务器,还有一种不在DNS层次结构之中,但是很重要的DNS,称为本地DNS服务器。本地DNS服务器通常邻近其所在网络的其他主机。当主机发出DNS请求时,该请求被发往本地DNS服务器,它起着代理的作用,并将请求转发到DNS服务器层次结构中。
    DNS:因特网的目录服务_第2张图片
    DNS:因特网的目录服务_第3张图片
    DNS查询方式一般有两种,递归查询迭代查询.递归查询就是一定要向请求者返回想要的,顺着一路请求下去,迭代查询就是我不知道你想要的,但是我可以告诉你去哪里可以找到你想要的.一般情况下,查询满足请求主机到本地DNS服务器的查询是递归的,本地DNS服务器与其他服务器之间查询是迭代的.
2.DNS缓存

DNS缓存实际上是为了改善时延性能并且减少在因特网上传输的DNS报文数量而引入的。DNS缓存原理十分简单,每当DNS服务器发出请求后收到回答时,就将回答的内容缓存在它自己的主机空间上。这样,如果有相同的请求到达时,就不需要再去发出请求,直接使用缓存即可;因为有了缓存,本地DNS就可以直接提供一些经常被访问的主机名所对应的IP地址,而不需要询问根DNS服务器了。由于主句和主机名与IP地址之间的映射并不是永久的,DNS服务器在一段时间之后(通常设置为两天)将丢弃缓存信息.

DNS记录和报文

共同实现DNS分布式数据库的所有DNS服务器存储了资源记录(Resource Record,RR),RR提供了主机名到IP地址的映射.每条资源记录包含下列字段的4元组:(Name,Value,Type,TTL)

TTL是该记录的生存时间,他决定了资源记录应该从缓存中删除的时间
name和value的值取决于type:

  • Type=A:name是主机名,value是主机名对应的IP地址

  • Type=NS:name是个域,而value是个知道如何获得该域中主机IP地址的权威DNS服务器主机名

  • Type=CNAME,value是别名为name的主机对应的规范主机名

  • Type=MX:value是别名为name的邮件服务器的规范主机名

如果一台DNS服务器是用于某特定主机名的权威DNS服务器,name该DNS服务器回有一条包含用于该主机名的类型A记录
如果服务器不是用于某主机名的权威服务器,那么该服务器将包含一条记录为NS记录,该记录对应于包含主机名的域;他还将包含一条类型A记录,该记录提供了再NS记录的value字段中DNS服务器的IP地址

DNS报文

DNS报文有两种,即查询报文回答报文,并且两种报文有着相同的结构:
DNS:因特网的目录服务_第4张图片

  • 前12字节是首部区域,标识符是一个用来标记该查询的16比特数。该标志符会被复制到相应的回答报文里,以便匹配请求和回答;标志字段有若干标志,用来指出报文的类型(请求还是响应)、查询类型(递归还是迭代)、是否是所请求名字的权威DNS服务器、以及4个有关数量的字段,用来指示4类数据区域出现的数量;

  • 问题区域包含了正在进行的查询信息,包括名字字段、查询类型;

  • 权威区域包含了其他权威服务器的信息;

  • 附加区域包含了其它有帮助的记录,比如在对于一个MX类型的请求回答报文里,回答区域里指出了邮件服务器的规范主机名,而附加区域里就有可能包含一个类型为A的关于该规范主机名的的IP地址;

在DNS数据库中插入记录

需要在注册登记机构完成这一任务,当你注册一个域名时,需要向该机构提供你的基本和辅助DNS服务器的名字和IP地址;该注册机构将确保一个类型为NS和类型为A的记录输入对应的顶级域名服务器;这样就完成了插入数据

你可能感兴趣的:(笔记,计算机网络,dns服务器)