目录
一、DNS协议的概念
域名系统(Domain Name System,DNS)的主要任务是进行主机名到P地址转换的目录服务。DNS是:①一个由分层的DNS服务器(DNS server)实现的分布式数据库;②一个使得主机能够查询分布式数据库的应用层协议。DNS服务器通常是运行BIND(Berkeley Internet Name Domain)软件的UNIX机器。DNS协议运行在UDP之上,使用53号端口。
二、DNS协议的组成
2.1 层次结构中的三种DNS服务器
-
根DNS服务器
根据DNS查询报文中的内容返回相应顶级DNS服务器的地址。如收到www.baidu.com的域名解析请求,则会根据com返回负责com的顶级域名服务器的IP地址。
-
顶级(Top-Level Domain,TLD)DNS服务器
负责顶级域名如com、net、org,以及所有国家的顶级域名如uk、fr。根据DNS查询报文中的内容返回相应存有DNS记录的权威DNS服务器。如收到www.badiu.com的域名解析请求,则会根据baidu.com返回负责baidu.com的权威DNS服务器的IP地址。
-
权威DNS服务器
在因特网上具有公共可访问主机的每个组织机构必须提供公共可访问的DNS记录,这些记录将这些主机的名字映射为IP地址。一个组织机构的权威DNS服务器收藏了这些DNS记录。
2.2 本地DNS服务器
本地DNS服务器不属于DNS服务器的层次结构中,但它对DNS层次结构非常重要。每个ISP(如一个大学,一个学院,一个公司)都有一台本地DNS服务器。本地DNS服务器起着代理的作用,它会处理本ISP中的DNS请求,并且由本地DNS服务器通过迭代或递归查询该域名的IP地址。
Tips:
递归查询:请求主机向DNS服务器发起查询请求,且DNS服务器返回最终目标结果。
迭代查询:针对请求主机的DNS查询,本地DNS服务器分别向根服务器、顶级服务器、权威服务器进行查询,且所有回答都是直接返回给本地服务器(返回的不是最终结果)。
三、DNS缓存与记录
3.1 DNS缓存
用于改善时延性能并减少在因特网上到处传输的DNS报文数量。在一个请求链中,当某DNS服务器接收到一个DNS回答,则会将该回答的信息保存在本地存储器中。当下一次接受到DNS请求时,会先查询本地缓存,若存在相关记录,则直接返回结果,而省去查找根、顶级或权威服务器的时间与报文。DNS服务器也可以保存根服务器的回答,在下一次查询中可直接查找相应的顶级服务器。
3.2 DNS记录
DNS记录分为四种类型。分别是A、NS、CNAME、MX。DNS记录包括以下字段(Name,Value,Type,TTL)
-
如果Type=A,则Name是主机名,Value是该主机名对应的P地址。一条类型为A的资源记录提供了标准的主机名到IP地址的映射。例如(www.baidu.com,14.119.104.189,A)就是一条类型A记录。
-
如果Type=NS,则Name是个域(如foo.com),而Value是个知道如何获得该域中主机IP地址的权威DNS服务器的主机名。例如(foo.com,dns.foo.com,NS)就是一条类型为NS的记录。
-
如果Type=CNAME,则Value是别名为Name的主机对应的规范主机名。该记录能够向查询的主机提供一个主机名对应的规范主机名,例如(foo.com,relayl.bar.foo.com,CNAME)就是一条CNAME类型的记录。
-
如果Type=MX,则Value是个别名为Name的邮件服务器的规范主机名。举例来说,(foo.com,mail.bar.foo.com,MX)就是一条MX记录。为了获得邮件服务器的规范主机名,DNS客户应当请求一条MX记录;而为了获得其他服务器的规范主机名,DNS客户应当请求CNAME记录。
四、DNS协议的运行流程
-
主机a.b.c想知道主机e.f.d.c的IP地址,向本地DNS服务器dns.b.c进行查询。
-
本地DNS服务器收到请求后,先查询本地DNS缓存,查看是否有相关记录,若存在相关记录,则直接返回A记录给请求主机。也有可能存在顶级域名的记录,则直接向顶级DNS服务器发起查询请求。若本地不存在相关记录,本地DNS服务器则向根DNS服务器发送查询报文。
-
根DNS服务器收到查询报文后,根据c前缀返回负责c的顶级DNS服务器的IP地址。
-
本地DNS服务器根据根DNS服务器的回答向顶级DNS服务器发起查询请求
-
顶级DNS服务器根据d.c前缀返回存有相关记录的权威DNS服务器的IP地址。
-
本地DNS服务器根据顶级DNS服务器的回答向权威DNS服务器发起查询请求。
-
权威DNS服务器根据查询报文中的内容将e.f.d.c的IP地址进行返回
-
本地DNS服务器将权威DNS服务器返回的结果转发给请求主机a.b.c
五、DNS可能会遭受的攻击
-
通过DDoS对根服务器进行攻击,使根服务器无法正常响应请求。但由于根服务器受到了分组过滤器的保护,配置的分组过滤器阻断了素有指向根服务器的ICMP ping报文。
-
通过DDoS对顶级域名服务器进攻击,使顶级域名服务器无法正常响应请求。这种攻击的严重性通过本地DNS服务器中的缓存技术可被部分缓解。
-
中间人攻击,攻击者劫持主机的DNS请求,并返回伪造的回答,将解析IP指向攻击者的Web站点。
-
通过假冒的源地址向权威DNS服务器发送DNS请求。