DNS的全称是Domain Name System。它担任把FQDN(就是以\".\"分隔结束的姓名)翻译成一个IP。开始的DNS体系运用的是一个巨大的hosts.txt文件(很吃惊,用 这个就好使了?),可是一段时刻今后,开发这就不得不必数据库来替代hosts.txt文件,终究开展到了现在的分布式数据库。
DNS体系是一个巨大的树,最上方有一个无名树根,下一层是arpa,com,edu,gov,int,mil,us, cn。等等,其间arpa,是域名反解析树的顶端;而com,edu,等域名原本只用在美国(这就是技能特权啊),可是现在简直全世界通用;而us, cn,等叫做国家域。这个树里边的域名并不是统一办理的,网络信息中心(NIS)担任分配尖端域合派遣其他拟定地区域的授权组织。
一个独立办理的DNS子树叫做zone,最常见的区域就是二级域名,比方说.com.cn。咱们还能够把这个二级域名给划分红更小的区域,比方说sina.com.cn。DNS体系是一个分布式的数据库,当一个数据库发现自己并没有某查询所需求的数据的时分,它将把查询转发出去,而转发的目的地通常是根服务器,根服 务器从上至下层层转发查询,直到找到方针停止。DNS还有一个特色就是运用高速缓存,DNS把查询过的数据缓存在某处,以便于下次查询时运用。
DNS协议
DNS报文界说了一个既能够查询也能够呼应的报文格式。对各个字段简略解说如下:
最前面的16个bit仅有的标明了问题号码,用于查询端差异自己的查询。
紧接着的16个bit又能够做进一步的细分,标明了报文的性质和一些细节,比方说是查询报文仍是呼应报文,需求递归查询与否(一般服务器都支撑递归查询,并且不需求任何设置,BIND就是这样)
查询问题后边有查询类型,包含A,NS,CNAME,PTR,HINFO,MX,假如了解BIND的话,就知道在zong的配置文件里边,每一条记载都记载了各自的类型,比方A就是IP地址,NS就是姓名服务器。
呼应报文能够回复多个IP,也就是说,域名能够和多个IP地址对应,并且有许多CNAME。
反向查询
正向查询指的是经过域名得到IP的查询,而反向查询就是经过IP得到域名。例如用host指令,host ip就能够得到服务器的域名,host domainName 就得到IP。
略微知道一点数据结构的人都能意识到,在正向查询的域里边做反向查询,其做法只要遍历整个数据调集----关于DNS来说,那就是遍历整个数据库, 这将带来巨大的担负,所以DNS采取了另一种方法,运用另一棵子树来保护IP-〉域名的对应表。
这个子树的根节点是in-addr.arpa,而一个IP 例如192.168.11.2)所具有的DNS地址就是 2.11.168.192.in-addr.arpa(ip倒置)。在DNS体系里边,一个反向地址对应一个PTR纪录(对应A纪录),所以反向查询又名 做指针(PTR)查询。
其他问题的评论DNS服务器高速缓存
BIND9默许是作为一个高速缓存服务器,其将一切的查询都转交到根服务器去,然后得到成果并放在本地的缓冲区,以加速查询速度。假如有爱好能够装置一个BIND9来测验一下。而自己界说的zone则能够规则其在缓存中的时刻,一般是1天(就是配置文件中的1D)。
用UDP仍是TCP
DNS服务器支撑TCP和UDP两种协议的查询方法,并且端口都是53。而大多数的查询都是UDP查询的,一般需求TCP查询的有两种状况:
当查询数据多大以至于产生了数据切断(TC标志为1),这时,需求使用TCP的分片才能来进行数据传输(看TCP的相关章节)。
当主(master)服务器和辅(slave)服务器之间通讯,辅服务器要拿到主服务器的zone信息的时分。
转载请注明出处。