DNS 是域名系统 (Domain Name System) 的缩写,它是由解析器和域名服务器组成的数据库
要知道DNS是什么,须要从域这个概念开始了解缓存
这里的域指并不是平时咱们所说的地理域之类,而指的是"名称域"——"名称空间"服务器
名称域/名称空间能够"倒置的树"来解释dom
"倒置的树"由根域开始,接着根的下一层是各个顶级域,每一个顶级域之下又有多个二级域,每一个二级域下又有子域,以此类推下去...最后到主机名ide
根域(.)
顶级域(Top Level Domain, TLD, tld)
组织域:标识域的组织结构;
com, net, org, gov, edu, mil, ...
地理域:标识域所在的地理范围;
tw, hk, cn, jp, iq, ...
反向域:in-addr.arpa
二级域及下级子域:由企业,组织,团体或我的维护的域;
主机名:标识特定域中的特定主机名称;spa
了解了域的概念后,就要说域的表示方法:
FQDN:Full Qualified Domain Name,彻底合格域名;主机名的完整名称;
从枝叶到根域的顺序书写——从主机名.最低级的子域.次级的子域.(以此类推到)子域.二级域.顶级域.(根)
其中最后的"."是根域的,其他的"."表示域与域之间的链接符号指针
每一个名称域都对应着某个地址,而这时候就须要经过解析到某个的地址;
解析的方式有两种:正向解析:FQDN --> IP
反向解析:IP --> FQDN继承
注意:正向解析和反向解析所使用的名称属于不一样空间,不是同一棵树,也不是同一个数据库;ip
这里的数据库就存放在服务器中,而这里的服务器就跟DNS有关系了。资源
DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。
而这服务器中还存放了域名与IP地址之间转换的数据内容,是用于完成名称解析工做的,咱们称为"资源记录";即:Resource Record,简称为"RR";
资源记录咱们又能够分为下列几种:
A,AAAA,PTR,SOA,NS,CNAME,MX
下面介绍各个资源类型:
SOA:Start Of Authority,起始受权记录;
在任何一个区域数据库中必须有且只能有一条SOA记录,并且该记录必须放在数据库中的第一条;其中包括:
域名;
数据缓存的时间;
NS服务器的主机名;
管理员的邮箱地址;
序列号,刷新时间间隔,重试时间间隔,过时时间及否认答案的缓存时间;
A:Address,主机记录;
标识从彻底合格域名到IPv4地址的映射关系;
AAAA:Address,主机记录;
标识从彻底合格域名到IPv6地址的映射关系;
PTR:PoinTeR,反向指针记录;
标识从IP地址到彻底合格域名的映射关系;
NS:Name Server,名称服务器记录;
标识当前域中被受权的名称服务器;
CNAME:Conanical Name,别名记录;
标识从彻底合格域名到彻底合格域名的映射关系;
MX:Mail eXchange,邮件交换记录;
标识域中的邮件服务器的主机名称,标识从域名到彻底合格域名的映射关系;
MX资源记录包含了一个优先级,0-65535,数字越小优先级越高;
介绍完不一样的资源记录类型后,咱们还须要熟悉这些资源记录在数据库(服务器)中是如何存在的,也就是它们是如何书写的
格式:DN|FQDN [TTL] IN RR_TYPE VALUE
TTL:TTL是以秒为默认时间单位的时间标识符号,若是省略,则从全局定义的宏中继承,一般是$TTL;
RR_TYPE:资源记录类型;
VALUE:变量(ip地址...)
接下来介绍的是不一样的资源记录根据格式的书写及注意事项:
SOA: DN|FQDN:当前域的域名,如:qhdlink.com. 或者使用"@"代替域名;@符号会使用主配置文件中定义的域名来代替; VALUE:由如下几个部分组成: 1.当前域中的主名称服务器的FQDN;ns.qhdlink.com. 2.当前域的数据库管理员的邮箱地址,须要使用"."来代替"@";root.qhdlink.com. 3.主名称服务器进行区域传送的相关时间参数的定义: (Serial Refresh Retry Expeir TTL) (Serial; Refresh; Retry; Expeir; TTL;) 示例: qhdlink.com. 86400 IN SOA ns1.qhdlink.com. master.qhdlink.com. ( 2018040601; 1H; 10M; 1W; 5M;) @ 86400 IN SOA ns1.qhdlink.com. master.qhdlink.com. (2018040601 1H 10M 1W 5M) NS记录: name:当前域的域名;能够写彻底合格域名FQDN;能够写@占位;还能够省略不写,若是省略不写,则意味着该资源记录的名称与其上一条资源记录的名称相同; value:当前区域内被受权的名称服务器的FQDN; 注意: 1.一个域中有多少台名称服务器就须要写多少个NS资源记录; 2.每一个NS资源记录都必需要有一个A记录与之对应; 示例: qhdlink.com. IN NS ns1.qhdlink.com. @ IN NS ns1 IN NS ns2 MX记录: name:当前域的域名;能够写彻底合格域名FQDN;能够写@占位;还能够省略不写,若是省略不写,则意味着该资源记录的名称与其上一条资源记录的名称相同; RR_TYPE:MX priority value:当前域中有效的邮件服务器的FQDN; 注意: 1.一个域中,能够有多条MX资源记录,经过优先级的大小决定被使用的次序; 2.每一个MX资源记录都必须对应一条A记录; 示例: qhdlink.com. IN MX 10 mail.qhdlink.com. @ IN MX 10 mail A记录: name:域中指定主机的FQDN; value:该主机上真实有效的IPv4地址; 示例: www.qhdlink.com. 43200 IN A 192.168.1.100 www 43200 IN A 192.168.1.100 泛域名: *.qhdlink.com. 43200 IN A 192.168.1.100 * 43200 IN A 192.168.1.100 直接域名解析: qhdlink.com. 43200 IN A 192.168.1.100 一般,泛域名或直接域名都是为了防止用户写错名称而致使没法给出正确的解析结果; CNAME记录: name:域中指定主机的别名; value:真正的主机的FQDN; 示例: ftp.qhdlink.com [86400] IN CNAME www.qhdlink.com. ftp [86400] IN CNAME www PTR记录: name:将IP地址的四个八位组反过来,将IP地址中的主机部分加上反向域的域名后缀; 若是IP地址是:172.16.1.100/16,其对应的名称的写法: 100.1 IN PTR www.qhdlink.com. 100.1.16.172.in-addr.arpa. IN PTR www.qhdlink.com. value:域中与指定的IP地址对应的FQDN; 注意:value部分必须写FQDN,绝对不能省略域名后缀,最后必须以"."结尾;不然bind程序会将反向域的域名补在名称以后