DNS域名系统
阅读数:162 评论数:0
跳转到新版页面分类
网络/通信
正文
DNS的全称是Domain Name System。它负责把FQDN(就是以"."分隔结尾的名字)翻译成一个IP。最初的DNS系统使用的是一个巨大的hosts.txt文件,可是一段时间以后,开发这就不得不用数据库来代替hosts.txt文件,最终发展到了现在的分布式数据库。DNS还有一个特点就是使用高速缓存,DNS把查询过的数据缓存在某处,以便于下次查询时使用。
一、DNS协议
1、最前面的16个bit唯一的标示了问题号码,用于查询端区别自己的查询。
2、紧接着的16个bit又可以做进一步的细分,标示了报文的性质和一些细节,比如说是查询报文还是响应报文,需要递归查询与否(
3、查询问题后面有查询类型,包括A,NS,CNAME,PTR,HINFO,MX,如果熟悉BIND的话,就知道在zong的配置文件里面,每一条记录都记载了各自的类型,比如A就是IP地址,NS就是名字服务器。
4、响应报文可以回复多个IP,也就是说,域名可以和多个IP地址对应,并且有很多CNAME。
二、反向查询
正向查询指的是通过域名得到IP的查询,而反向查询就是通过IP得到域名。
DNS使用另一棵子树来维护IP-〉域名的对应表。这个子树的根节点是in-addr.arpa,而一个IP 例如192.168.11.2所具有的DNS地址就是 2.11.168.192.in-addr.arpa(ip倒置)。在DNS系统里面,一个反向地址对应一个PTR纪录(对应A纪录),所以反向查询又叫 做指针(PTR)查询。
三、其他问题
DNS服务器支持TCP和UDP两种协议的查询方式,而且端口都是53。而大多数的查询都是UDP查询的,一般需要TCP查询的有两种情况:
1、当查询数据过大以至于产生了数据截断(TC标志为1),这时,需要利用TCP的分片能力来进行数据传输
2、当主(master)服务器和辅(slave)服务器之间通信,辅服务器要拿到主服务器的zone信息的时候。
四、DNS服务中的资源类型
1、SOA
Start Of Authority,起始授权记录。包含以下信息:
(1)当前区域的主DNS服务器FQDN
(2)当前区域管理员的邮箱地址
(3)主从服务协调属性的定义以及否定答案的TTL
区域解析库有且仅有一个SOA记录,而必须为解析库的第一条记录。
2、A记录
internet Address,将全称域名解析成IP地址。
3、NS记录
Name Server,标明当前区域的DNS服务。
4、CNAME记录
Canonical Name,别名记录,将多个名字映射到同一台计算机。
5、MX记录
Mail eXchanger,邮件交换器,它指向一个邮件服务器。
五、域名服务器
分类 | 作用 |
---|---|
根域名服务器 | 最高层次的域名服务器,本地域名服务器解析不了的域名就会向其求助 |
顶级域名服务器 | 负责管理在该顶级域名服务器下注册的二级域名 |
权限域名服务器 | 负责一个区的域名解析工作 |
本地域名服务器 | 当一个主机发出DNS查询请求时,这个查询请求首先发给本地域名服务器 |
六、域名解析
1、主机先向本地域名服务器进行递归查询。
2、本地域名服务器采用迭代查询,向一个根域名服务器进行查询。
3、根域名服务器告诉本地域名服务器,下一次应该查询的顶级域名服务器的IP地址。
4、本地域名服务器向顶级域名服务进行查询。
5、顶级域名服务器告诉本地域名服务器,下一步查询权限服务的IP地址。
6、本地域名服务器向权限服务器进行查询。
7、权限服务器告诉本地域名服务器所查询的主机的IP地址。
8、本地域名服务器最后把查询结果告诉主机。
七、递归查询和迭代查询
1、递归查询:本机向本地域名服务器发出一次查询请求,请静待最终的结果。如果本地域名服务器无法解析,自己会以DNS客户机的身份向其它域名服务器查询,直到得到最终的IP地址告诉本机。
2、迭代查询:本地域名服务器向根服务器查询,根域名服务器告诉它下一步到哪里去查询,然后它再去查,每次它都是以客户机的身份去各个服务器查询。
通俗地说,递归就是把一件事情交给别人,如果事情没有办完,哪怕已经办了很多,都不要把结果告诉我,我要的是你的最终结果,而不是中间结果;如果你没办完,请你找别人办完。
迭代则是我交给你一件事,你能办多少就告诉我你办了多少,然后剩下的事情就由我来办。