DNS提供的服务
DNS是:1.一个由分层的DNS服务器实现的分布式数据库;2. 一个使主机能够查询分布式数据库的应用协议。
DNS协议运行在UDP上,使用53号端口。
与http,FTP,SMTP协议一样,DNS协议是应用层协议,其原因在于:1. 使用客户-服务器模式运行在通信的端系统之间;2. 在通信的端系统之间通过下面的端到段运输协议来传送DNS报文。
考虑当某个用户主机上的一个浏览器(即一个HTTP客户请求URLwww.someschool.edu/index.html页面时会发生什么现象。为了使主机能够请求报文发送到web服务器www.someschool.edu,该用户需要获取其IP地址。做法入下:
- 同一台用户主机上运行着DNS应用的客户端。
- 浏览器从上述URL中抽取出主机名www.someschool.edu,并将这台注记名传给DNS应用的客户端。
- DNS客户向DNS服务器发送一个包含主机名的请求
- DNS客户最终会收到一份回答报文,其中含有对应于该主机名的IP地址。
- 一旦浏览器接收到来自DNS的该IP地址,他能够向位于该IP地址的80断后的HTTP服务器进程发起一个TCP连接。
DNS的工作机理概念
在单一DNS服务器上运行集中式数据库完全没有可扩展能力。因此,DNS采用了分布式的设计方案。事实上,DNS是一个在因特网上实现分布式数据库的精彩范例。
分布式、层次数据库
为了处理扩展性问题,DNS使用了大量DNS服务器,他们以层次方式组织并且分布在全世界范围内。大致来说有3中类型的DNS服务器:根DNS服务器、顶级域(TLD)DNS服务器和权威DNS服务器。
假定一个DNS客户要决定主机名www.amazon.com的IP地址。粗略说来将发生下列事件: 客户首先与根服务器之一联系,它将返回顶级域名com的TLD服务器的IP地址。该客户则与这些TLD服务器之一联系,它将为amazon.com返回权威服务器的IP地址。最后该客户与amazon.com权威服务器之一联系,它为主机名www.amazon.com返回其IP地址。
根服务器->TLD服务器->权威服务器
- 根服务器:因特网一共有13个根DNS服务器,我们将每个服务器视为单个服务器,但每台服务器都是一个冗余服务器的网络。
- 顶级域(DNS)服务器。这些服务器负责顶级域名如com、org、net、edu以及所有国家的顶级域名如uk、fr、ca和jp等等
- 权威DNS服务器 因特网上具有公共可访问主机的每个组织机构必须提供公共可访问的DNS记录,这些记录将这些主机名映射为以IP地址。多数大学和大公司实现和维护他们自己基本和辅助(备份)的权威DNS服务器。
- 本地DNS服务器:不属于该服务器的层次结构,但是对DNS层次结构是最重要的。每个ISP都有一台本地DNS的服务器。
DNS缓存
在一个请求链中,当某DNS服务器接收一个DNS回答时,它能将该回答中的信息缓存在本地存储器中。
DNS记录和报文
资源记录(RR)是一个包含了下列字段的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的邮件服务器的规范主机名。