DNS服务器原理介绍
2017-04-24 20:33
204 查看
DNS的介绍
1.所用端口号
tcp:53
udp:53
2.什么时候用tcp,什么时候用udp?
tcp用在区域传送
udp用在域名解析
3.互联网上为什么有dns?
因为互联网的大多通讯都基于tcp/ip,而tcp/ip基于ip地址,但是IP地址对于人类来说没有那么好记,我们给每个IP地址设置一个名字,我们通过名字来访问,有dns服务器来把名字转换成IP地址来与外界通信。
4.dns的发展
1)本地解析hosts文件
在互联网发展初期,因为接入网络的主机并没有多少,所以就在主机里用一个文件来记录其他的IP地址
该文件在linux和Windows主机上的位置:
Linux:/etc/hosts
windows:%WINDOWS%/system32/drivers/etc/hosts
但是随着接入
4000
互联网的主机数越来越多,而且主机不知道谁加入了进来,所以这种方法已经不适合了
2)IANA搭建了一个ftp服务器
此时IANA(The Internet Assigned Numbers Authority,互联网数字分配机构)想了一个办法,搭建了一个ftp服务器,
任何主机需要使用地址和域名就先服务器申请,申请结束后,把申请通过的地址和域名保存到服务器上,
而服务器上维护公共的hosts文件,而客户端在需要的时候到服务器上下载更新hosts文件就好了,可以定期去更新
连入网络的主机越来越多,上万台,那每次更新hosts文件, 每次从一万多条信息找一条,这样这个方法也不适合了
3)搭建一个存有所有已注册的主机名和IP地址,但是在每次和其他主机通信前多了一步
若一个主机想访问另一台主机的web服务,当我们输入完主机名,敲回车后,调用一个库文件,这个库文件会扮演成主机,
先去寻找在本地的DNS服务器,并且将请求扔给他,说我现在要访问B主机,请告诉我B主机的IP,服务器会在本地查找
数据库,找B的IP,然后将数据扔给请求主机,
(上面这部分叫地址请求解析过程),主机知道了对方主机的IP,就去通信了
5.DNS树状结构,namespace
上面的例子中,县代表DNS的namespace,县长代表根域名服务器,李家村是根下的某个域,李四是那个域当中的一台主机
张三想和一个县里的李四进行通信,但是张三不知李四在哪,所以张三要去问县长,李四在哪里啊,县长一看,李四是李家村的,
让张三去找李家村的村长,张三去找李家村的村长,村长一看,李四是本村人,村长知道李四在哪,就把李四的地址给了张三,
这样张三就知道李四的地址了。
dns的命名空间
注意:
根服务器:13组服务器,异地多活
搭建DNS时就要把13台DNS服务器的地址配置进去,DNS服务器知道自己负责的域的主机和根域其他都不知道
DNS一般只负责自己域内的解析,其他在文件中标明的主机也会给解析,
正向解析和反向解析是两个不同的名称空间,是两颗不同的树
反向解析在邮件用的多
6.DNS的查询类型
递归查询:是主机只发送一次请求给DNS服务器,剩下的事情就都交给服务器做,主机只等收结果
迭代查询:是主机向服务器发请求,若服务器不知道,则给你发另一台服务器的地址,你再去访问那台服务器
7.浏览器访问一个域名的过程
a. 浏览器缓存,浏览器会缓存DNS记录一段时间。
操作系统没有设定浏览器存储DNS记录的时间长短,不同的浏览器会存储各自的一个固定时间,时长为2~30分钟不等。
b. 系统缓存
如果浏览器缓存里没有找到需要的记录,浏览器会做一个操作系统调用(windows里是gethostname),这样子,就可以获得系统缓存里的记录啦。
c. 路由器缓存
接下来,如果还是没有找到需要的缓存,将前面的查询请求发给路由器,它一般会有自己的DNS缓存。
d. 如果还是没有,那么就去检查ISP有没有吧~
每一个ISP(网络服务提供商),或一个大学,甚至是一个大学里的系都会有一个自己的本地域名服务器,他会在url第一次访问时缓存该域名的指向。
下次再访问时,他会从缓存里把这个url曾经指向的IP调出来。
e. 递归搜索
还是没有需要的缓存~ 就只能放大招啦~
你的ISP的DNS服务器会从根域名开始进行递归查询。
8.递归查询:
主机向本地域名服务器的查询一般都是采用递归查询。
如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其根域名服务器继续发出查询
请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是返回一个
失败的响应,表示无法查询到所需的IP地址。
9.迭代查询:
本地域名服务器向根域名服务器的查询通常是采用迭代查询。
当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么返回给本地域名服务器所要查询的IP地址,要么返回给本地域名服务器
下一步应当查询的域名服务器的IP地址。
举个栗子:假设的主机想知道另一个主机(域名为 my.xxsilence.net)的IP地址。具体步骤如下:
① 主机先向其本地域名服务器进行递归查询,如果缓存中没有,继续下一步。
② 本地域名服务器采用迭代查询,先向一个根域名服务器查询。
③ 根域名服务器告诉本地域名服务器,下一次查询的顶级域名服务器 dns.net。
④ 本地域名服务器向顶级域名服务器 dns.net。
⑤ 顶级域名服务器 dns.net,下一次应查询的权限域名服务器dns.xxsilence.net的IP地址。
⑥ 本地域名服务器向权限域名服务器dns.xxsilence.net进行查询。
⑦ 权限域名服务器dns.xxsilence.net告诉本地域名服务器,所查询的主机的IP地址。
⑧ 本地域名服务器最后把查询结果告诉主机。
10.DNS服务器类型
(1)主域名服务器:负责维护这个区域的所有域名信息,是特定的所有信息的权威信息源。也是说,主域名服务器内所存储的是该区域的正本数据,系统管理员可以对它进行修改。
(2)辅助域名服务器:从主DNS服务器或其他的从DNS服务器那里服务(区域传送)一份解析库,当主域名服务器出现故障、关闭或负载过重时,辅助域名服务器作为备份服务提供域名解析服务。辅助域名服务器中的区域文件内的数据是从另外一台域名服务器复制过来的,并不是直接输入的,也是说这个区域文件只是一份副本,这里的数据是无法修改的。
(3)缓存域名服务器:不维护任何一个域名,负责递归,是本地所有主机的共同的DNS缓存,可运行域名服务器软件但没有域名数据库。它从某个远程服务器取得每次域名服务器查询的回答,一旦获取一个答案,将它放在高速缓存中,以后查询相同的信息时用它予以回答。缓存域名服务器不是权威性服务器,因为提供的所有信息都是间接信息。
(4)转发域名服务器:负责所有非本地域名的本地查询。转发域名服务器接到查询请求时,在其缓存中查找,如找不到把请求依次转发到指定的域名服务器,直到查询到结果为止,否则返回无法映射的结果
区域解析文件里的几个参数说明:
序列号:解析库的版本号:前提:主服务器解析库内容发生变化,其序列号递增:
刷新时间间隔:从服务器从主服务器请求同步解析库的时间间隔
重试时间间隔:从服务器从主服务器请求同步解析库失败时,再次尝试的时间间隔
过期时间间隔:从服务器始终联系不到主服务器时,多久之后放弃从服务器角色,停止提供服务
否定应答的TTL:
单位:H,D,M,W,默认是S秒
区域传送:为什么不叫域传送,域有正反向,区域是与解析方向有关的
正向 FQDN--->IP
反向:IP------->FQDN
FQDN:Full Qualified Domain Name 完全合格域名或完全限定域名
www.mageedu.com. 完全合格域名
区域传送分为:
全量传送:传送整个解析库
增量传送:传送解析库中变化的内容
11.一次完整的查询请求的流程
1)hosts文件
2)DNS service
1)Local Cache ##到缓存DNS上找
2)DNS Server(recursion) ##到主DNS服务武器上找
3)Server Cache ##到主DNS服务器上找缓存
4)iteration(迭代) ##最后问其他服务器
12.解析答案
肯定答案:
否定答案:请求的条目不存在等原因导致无法返回结果
权威答案:负责域名解析的主DNS服务器
非权威答案:看缓存的都是非权威答案
13.资源记录
区域解析库 :由众多的RR组成
资源记录:Resource Record,RR
有记录类型:A,AAAA,PTR,SOA,NS,CNAME,MX
SOA:Start Of Authority,起始授权记录,一个区域解析库有且只能有一个SOA记录,而且必须要出现在解析库的第一条记录,当前解析库为哪个区域服务
A: Internet Address,FQDN--->IP
AAAA:FQDN--->IPv6
PTR:PoinTeR,IP--->FQDN
NS:Name Server,专用于表明当前区域的DNS服务器
CNAME:Canonical Name,别名记录
MX:Mail Exchanger,邮件交换器
资源记录定义的格式:
语法:name [TTL]可缓存时长 IN rr_type value
注意:
(1)TTL可以从全局继承
(2)@可用于引用当前区域的名字
(3)同一个名字可以通过多条记录定义多个不同的值,此时会以轮询方式相应
(4)同一个值也可能有多个不同的名字:通过多个不同的名字指向同一个值进行定义:此仅表示通过多个不同的名字可以找到同一个主机,仅此而已
SOA:
name:当前区域的名字,例子,“mageedu.com.”
value:由多部分组成
1)当前区域的主DNS服务器的FQDN,也可以使用当前区域打的名字:@
2)当前区域管理员的邮箱地址,但地址中不能使用@符号,一般用.替换,例如,linuxedu。magedu.com
3)(主从服务协调属性的定义以及否定的答案的统一的TTL)
例如:
magedu.com. 86400 IN SOA ns.magedu.com. nsadmin.magedu.com. {
2015042201 ;序列号
2H ;刷新时间
10M ;重试时间
1D ;否定答案的TTL值
}
NS:
name:当前区域的名字
value:当前区域的某DNS服务器的名字,例如,ns.magedu.com.
注意:一个区域可以有多个NS记录
例如:
magedu.com. IN NS ns1.magedu.com.
magedu.com. IN NS ns2.magedu.com.
注意:
(1)相邻的两个资源记录的name相同时,后续的可省略
(2)对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录
MX:
name:当前区域的名字
value:当前区域的某邮件服务器(SMTP服务器)的主机名
一个区域内,MX记录可以有多个,但每个记录的value之前应该有个数字(0~99),
表示此服务器的优先级,数字越小由下级越高
例如:
magedu.com. IN MX 10 mx1.magedu.com.
magedu.com. IN MX 20 mx2.magedu.com.
注意:
(1)对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
A:
name:某主机的FQDN,例如,www.magedu.com.
value:主机名对应主机的IP地址
例如:
www.magedu.com. IN A 1.1
b097
.1.1
www.magedu.com. IN A 1.1.1.2 一个名字对应多个IP,轮询
mx1.magedu.com. IN A 1.1.1.3
mx2.magedu.com. IN A 1.1.1.3 一个值对应多个名字
注意:
*.magedu.com. IN A 1.1.1.4 避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址
magedu.com. IN A 1.1.1.4 可以只输入域名就能访问某台主机
AAAA:
name:FQDN
value:IPv6
PTR:
name:IP,有特定格式,把IP地址反过来写,有特定后缀,in-addr.arpa.
value:FQDN
例如:
4.3.2.1.in-addr.arpa. IN PTR www.magedu.com
简写为:
4 IN PTR www.magedu.com.
注意:网络地址及后缀可省略,主机地址依然要反着写;
CNAME:
name:别名的FQDN
value:正式名字的FQDN
例如:
web.magedu.com. IN CNAME www.magedu.com.
1.所用端口号
tcp:53
udp:53
2.什么时候用tcp,什么时候用udp?
tcp用在区域传送
udp用在域名解析
3.互联网上为什么有dns?
因为互联网的大多通讯都基于tcp/ip,而tcp/ip基于ip地址,但是IP地址对于人类来说没有那么好记,我们给每个IP地址设置一个名字,我们通过名字来访问,有dns服务器来把名字转换成IP地址来与外界通信。
4.dns的发展
1)本地解析hosts文件
在互联网发展初期,因为接入网络的主机并没有多少,所以就在主机里用一个文件来记录其他的IP地址
该文件在linux和Windows主机上的位置:
Linux:/etc/hosts
windows:%WINDOWS%/system32/drivers/etc/hosts
但是随着接入
4000
互联网的主机数越来越多,而且主机不知道谁加入了进来,所以这种方法已经不适合了
2)IANA搭建了一个ftp服务器
此时IANA(The Internet Assigned Numbers Authority,互联网数字分配机构)想了一个办法,搭建了一个ftp服务器,
任何主机需要使用地址和域名就先服务器申请,申请结束后,把申请通过的地址和域名保存到服务器上,
而服务器上维护公共的hosts文件,而客户端在需要的时候到服务器上下载更新hosts文件就好了,可以定期去更新
连入网络的主机越来越多,上万台,那每次更新hosts文件, 每次从一万多条信息找一条,这样这个方法也不适合了
3)搭建一个存有所有已注册的主机名和IP地址,但是在每次和其他主机通信前多了一步
若一个主机想访问另一台主机的web服务,当我们输入完主机名,敲回车后,调用一个库文件,这个库文件会扮演成主机,
先去寻找在本地的DNS服务器,并且将请求扔给他,说我现在要访问B主机,请告诉我B主机的IP,服务器会在本地查找
数据库,找B的IP,然后将数据扔给请求主机,
(上面这部分叫地址请求解析过程),主机知道了对方主机的IP,就去通信了
5.DNS树状结构,namespace
上面的例子中,县代表DNS的namespace,县长代表根域名服务器,李家村是根下的某个域,李四是那个域当中的一台主机
张三想和一个县里的李四进行通信,但是张三不知李四在哪,所以张三要去问县长,李四在哪里啊,县长一看,李四是李家村的,
让张三去找李家村的村长,张三去找李家村的村长,村长一看,李四是本村人,村长知道李四在哪,就把李四的地址给了张三,
这样张三就知道李四的地址了。
dns的命名空间
注意:
根服务器:13组服务器,异地多活
搭建DNS时就要把13台DNS服务器的地址配置进去,DNS服务器知道自己负责的域的主机和根域其他都不知道
DNS一般只负责自己域内的解析,其他在文件中标明的主机也会给解析,
正向解析和反向解析是两个不同的名称空间,是两颗不同的树
反向解析在邮件用的多
6.DNS的查询类型
递归查询:是主机只发送一次请求给DNS服务器,剩下的事情就都交给服务器做,主机只等收结果
迭代查询:是主机向服务器发请求,若服务器不知道,则给你发另一台服务器的地址,你再去访问那台服务器
7.浏览器访问一个域名的过程
a. 浏览器缓存,浏览器会缓存DNS记录一段时间。
操作系统没有设定浏览器存储DNS记录的时间长短,不同的浏览器会存储各自的一个固定时间,时长为2~30分钟不等。
b. 系统缓存
如果浏览器缓存里没有找到需要的记录,浏览器会做一个操作系统调用(windows里是gethostname),这样子,就可以获得系统缓存里的记录啦。
c. 路由器缓存
接下来,如果还是没有找到需要的缓存,将前面的查询请求发给路由器,它一般会有自己的DNS缓存。
d. 如果还是没有,那么就去检查ISP有没有吧~
每一个ISP(网络服务提供商),或一个大学,甚至是一个大学里的系都会有一个自己的本地域名服务器,他会在url第一次访问时缓存该域名的指向。
下次再访问时,他会从缓存里把这个url曾经指向的IP调出来。
e. 递归搜索
还是没有需要的缓存~ 就只能放大招啦~
你的ISP的DNS服务器会从根域名开始进行递归查询。
8.递归查询:
主机向本地域名服务器的查询一般都是采用递归查询。
如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其根域名服务器继续发出查询
请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是返回一个
失败的响应,表示无法查询到所需的IP地址。
9.迭代查询:
本地域名服务器向根域名服务器的查询通常是采用迭代查询。
当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么返回给本地域名服务器所要查询的IP地址,要么返回给本地域名服务器
下一步应当查询的域名服务器的IP地址。
举个栗子:假设的主机想知道另一个主机(域名为 my.xxsilence.net)的IP地址。具体步骤如下:
① 主机先向其本地域名服务器进行递归查询,如果缓存中没有,继续下一步。
② 本地域名服务器采用迭代查询,先向一个根域名服务器查询。
③ 根域名服务器告诉本地域名服务器,下一次查询的顶级域名服务器 dns.net。
④ 本地域名服务器向顶级域名服务器 dns.net。
⑤ 顶级域名服务器 dns.net,下一次应查询的权限域名服务器dns.xxsilence.net的IP地址。
⑥ 本地域名服务器向权限域名服务器dns.xxsilence.net进行查询。
⑦ 权限域名服务器dns.xxsilence.net告诉本地域名服务器,所查询的主机的IP地址。
⑧ 本地域名服务器最后把查询结果告诉主机。
10.DNS服务器类型
(1)主域名服务器:负责维护这个区域的所有域名信息,是特定的所有信息的权威信息源。也是说,主域名服务器内所存储的是该区域的正本数据,系统管理员可以对它进行修改。
(2)辅助域名服务器:从主DNS服务器或其他的从DNS服务器那里服务(区域传送)一份解析库,当主域名服务器出现故障、关闭或负载过重时,辅助域名服务器作为备份服务提供域名解析服务。辅助域名服务器中的区域文件内的数据是从另外一台域名服务器复制过来的,并不是直接输入的,也是说这个区域文件只是一份副本,这里的数据是无法修改的。
(3)缓存域名服务器:不维护任何一个域名,负责递归,是本地所有主机的共同的DNS缓存,可运行域名服务器软件但没有域名数据库。它从某个远程服务器取得每次域名服务器查询的回答,一旦获取一个答案,将它放在高速缓存中,以后查询相同的信息时用它予以回答。缓存域名服务器不是权威性服务器,因为提供的所有信息都是间接信息。
(4)转发域名服务器:负责所有非本地域名的本地查询。转发域名服务器接到查询请求时,在其缓存中查找,如找不到把请求依次转发到指定的域名服务器,直到查询到结果为止,否则返回无法映射的结果
区域解析文件里的几个参数说明:
序列号:解析库的版本号:前提:主服务器解析库内容发生变化,其序列号递增:
刷新时间间隔:从服务器从主服务器请求同步解析库的时间间隔
重试时间间隔:从服务器从主服务器请求同步解析库失败时,再次尝试的时间间隔
过期时间间隔:从服务器始终联系不到主服务器时,多久之后放弃从服务器角色,停止提供服务
否定应答的TTL:
单位:H,D,M,W,默认是S秒
区域传送:为什么不叫域传送,域有正反向,区域是与解析方向有关的
正向 FQDN--->IP
反向:IP------->FQDN
FQDN:Full Qualified Domain Name 完全合格域名或完全限定域名
www.mageedu.com. 完全合格域名
区域传送分为:
全量传送:传送整个解析库
增量传送:传送解析库中变化的内容
11.一次完整的查询请求的流程
1)hosts文件
2)DNS service
1)Local Cache ##到缓存DNS上找
2)DNS Server(recursion) ##到主DNS服务武器上找
3)Server Cache ##到主DNS服务器上找缓存
4)iteration(迭代) ##最后问其他服务器
12.解析答案
肯定答案:
否定答案:请求的条目不存在等原因导致无法返回结果
权威答案:负责域名解析的主DNS服务器
非权威答案:看缓存的都是非权威答案
13.资源记录
区域解析库 :由众多的RR组成
资源记录:Resource Record,RR
有记录类型:A,AAAA,PTR,SOA,NS,CNAME,MX
SOA:Start Of Authority,起始授权记录,一个区域解析库有且只能有一个SOA记录,而且必须要出现在解析库的第一条记录,当前解析库为哪个区域服务
A: Internet Address,FQDN--->IP
AAAA:FQDN--->IPv6
PTR:PoinTeR,IP--->FQDN
NS:Name Server,专用于表明当前区域的DNS服务器
CNAME:Canonical Name,别名记录
MX:Mail Exchanger,邮件交换器
资源记录定义的格式:
语法:name [TTL]可缓存时长 IN rr_type value
注意:
(1)TTL可以从全局继承
(2)@可用于引用当前区域的名字
(3)同一个名字可以通过多条记录定义多个不同的值,此时会以轮询方式相应
(4)同一个值也可能有多个不同的名字:通过多个不同的名字指向同一个值进行定义:此仅表示通过多个不同的名字可以找到同一个主机,仅此而已
SOA:
name:当前区域的名字,例子,“mageedu.com.”
value:由多部分组成
1)当前区域的主DNS服务器的FQDN,也可以使用当前区域打的名字:@
2)当前区域管理员的邮箱地址,但地址中不能使用@符号,一般用.替换,例如,linuxedu。magedu.com
3)(主从服务协调属性的定义以及否定的答案的统一的TTL)
例如:
magedu.com. 86400 IN SOA ns.magedu.com. nsadmin.magedu.com. {
2015042201 ;序列号
2H ;刷新时间
10M ;重试时间
1D ;否定答案的TTL值
}
NS:
name:当前区域的名字
value:当前区域的某DNS服务器的名字,例如,ns.magedu.com.
注意:一个区域可以有多个NS记录
例如:
magedu.com. IN NS ns1.magedu.com.
magedu.com. IN NS ns2.magedu.com.
注意:
(1)相邻的两个资源记录的name相同时,后续的可省略
(2)对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录
MX:
name:当前区域的名字
value:当前区域的某邮件服务器(SMTP服务器)的主机名
一个区域内,MX记录可以有多个,但每个记录的value之前应该有个数字(0~99),
表示此服务器的优先级,数字越小由下级越高
例如:
magedu.com. IN MX 10 mx1.magedu.com.
magedu.com. IN MX 20 mx2.magedu.com.
注意:
(1)对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
A:
name:某主机的FQDN,例如,www.magedu.com.
value:主机名对应主机的IP地址
例如:
www.magedu.com. IN A 1.1
b097
.1.1
www.magedu.com. IN A 1.1.1.2 一个名字对应多个IP,轮询
mx1.magedu.com. IN A 1.1.1.3
mx2.magedu.com. IN A 1.1.1.3 一个值对应多个名字
注意:
*.magedu.com. IN A 1.1.1.4 避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址
magedu.com. IN A 1.1.1.4 可以只输入域名就能访问某台主机
AAAA:
name:FQDN
value:IPv6
PTR:
name:IP,有特定格式,把IP地址反过来写,有特定后缀,in-addr.arpa.
value:FQDN
例如:
4.3.2.1.in-addr.arpa. IN PTR www.magedu.com
简写为:
4 IN PTR www.magedu.com.
注意:网络地址及后缀可省略,主机地址依然要反着写;
CNAME:
name:别名的FQDN
value:正式名字的FQDN
例如:
web.magedu.com. IN CNAME www.magedu.com.
相关文章推荐
- DNS服务器:主要介绍DNS的服务原理以及安装及其主从配置
- DNS服务器配置介绍
- DNS服务器工作原理
- Tomcat服务器原理及应用的介绍【整合转载】
- Linux DNS服务系列之原理介绍及正反向解析配置
- DNS服务器工作原理
- DNS服务器的系统介绍
- DNS服务器工作原理
- Linux网络服务之DNS服务器介绍及配置实例详解 推荐
- DNS服务器原理详解及其配置
- DNS原理介绍和具体搭建DNS
- 互联网工作原理(8.DNS服务器是如何工作的)
- DNS服务器概念的简单的介绍,与搭建一个简单的DNS名称缓存服务器,实现域名解析(一)
- DNS服务器工作原理
- DNS原理介绍和具体搭建DNS 推荐
- 关于DNS服务器的介绍具有什么功能
- DNS服务器配置介绍
- DNS服务器工作原理
- DNS介绍和原理
- Linux学习笔记之 DNS原理介绍、DNS搭建、主从复制、子域授权和视图