常见问题

1、域名对应的IP地址修改完要将近一天的时间才能有效果?

DNS的数据库通常是在跑在DNS服务器的内存当中的,但是我们如果临时增加一条的话其实是写到了硬盘当中,当数据库服务刷新的时候新增的新记录才会被记录到内存当中。

这其实也会是与DNS的缓存有关系的,举个例子你的主机在.com下注册了域名1.1.1.1,后来又换成了2.2.2.2,在一天的时候当中你会发现当你ping主机的时候域名解析还是1.1.1.1,为什么?因为不仅DNS不仅PC本地有缓存,而且互联网上很多的DNS都有缓存,当它们所有的缓存都失效后才再去解析,所以这一通下来,也差不多是一天的时间。

2、递归和迭代

递归查询就是我们发出一个请求就一定能得到最终结果的查询,所以递归是对于我们的主机而言的,主机可以发一次查询就可以通过自己设置的DNS得到结果,但是我们设置的本地DNS服务器可能要费很大的力气才能帮助我们查找到,所以递归是针对主机而言的,主机发一个查询请求,主机不管DNS服务器费了多大的力气,它反正只要最后的结果,它一次查询的结果就是递归。

迭代就是说本地DNS服务器想要得到最终的答案需要多次查询,这就是迭代,所以迭代是针对本地DNS而言的,它要通过多次查询才能帮助客户端查询到查到对应的IP,它多次查找的过程就是迭代。

3、在公司内网部署DNS服务器的意义何在?

在内部搞一个DNS服务器之后,客户端可以通过此DNS实现递归,客户端自己发一次查询就好,让DNS服务器替自己迭代;同时如果在本公司内部有一个服务器不打算让互联网上的人访问,只想让公司的人访问的话,那么就把此服务器的域名和IP写入到本地搭建的DNS服务器的数据库当中,这样的话,本公司内部的人访问自己的服务器时把DNS指向自己搭建的DNS服务器就可以实现内部事务内部解决,如果想访问互联网的的主机时,本地的DNS会帮助客户端实现递归,它自己去迭代。所以说非常的方便。内网的DNS服务器万一坏了怎么办?要设置主从即可。

迭代非常浪费资源,所以尽量给组织内部的人提供迭代,但是ISP必须得自己搭建让自己自足,谷歌帮助全人类提供了一台迭代8.8.8.8,4.4.4.4。

4、正向和反向区域解析:

通过域名解析成IP是正向解析,通过IP解析域名是反向解析。通过正向区域可以实现正向解析,通过反向区域可以实现反向解析,值得一提的是反向区域在一定程序是依赖正向区域,正向区域完全不依赖反向区域。正反向区域是两个不同的系统,可以位于同一个主机,也可以位于不同的主机。

互联网的.com等一级域服务器只支持迭代,不支持递归,所以这些域不能帮助我们递归,而客户端也不支持,只能找一个中间人,这个中间人一般由ISP提供,人家只是中继一下帮你查询的,它有帮客户端递归的能力,而客户端就是需要这种能力。

5、服务器的主机名一定要与提供的服务一样吗?

baidu.com是一个域名,而www是一个主机,但是www主机所指向的主机的名字不一定就非得叫www,所以说网络的标识某一台服务器的的名字和服务器本身主机的名字没有一毛钱的关系,顶多就是IP的对应关系,你在.com域名下注册了一个域名baidu那么.com就在自己的数据库就加上一条

1.1.1.1                 baidu

一旦有人来找.bom查询百度的对应的IP,把1.1.1.1返回就是了,至少你是访问www还是mail还是什么,.com不管,.com只看到了你访问的是baidu。

6、DNS服务器的类型:

缓存DNS服务器,主DNS服务器、从DNS服务器、转发器

运营商给客户提供的DNS服务器,比如联通给提供的202开头的DNS服务器,它不负责任何域的解析,它仅仅给通过自己上网的客户端做递归的服务器(牺牲自己做迭代,自己麻烦最后把结果返回给客户端),其实这种的DNS就叫做缓存DNS,因为它只有缓存的功能,不负责解析任何域,当一个内网的主机请求时,如果它本地没有,它就去找根,进行迭代查询。虽然本地PC会缓存DNS,但是过一会儿就会失效了,失效之后再访问同一个网站还要去向DNS服务器查询,这其实就浪费了带宽,如果在内网我们自己搭建一个DNS服务器,让内网的DNS服务器去帮助我们迭代多好呀,还能节省带宽,会节省一部分带宽,它迭代的内容同样也有有效期,这个有效期是权威DNS规定的。其实家里的小米路由器就是一个缓存DNS服务器,通过小米路由器获得的DNS是网关,而路由器也有一个DNS,这个DNS指向的就是联通公司给分配的DNS,小米路由器充当了缓存器,帮助用户节省了带宽。

因为要冗余,所以DNS服务器通常会成双出现,所以有了主从之分。

7、主从DNS之间的区域传送、全量传送,增量传送

但是内网当中的部署的DNS服务器挂了之后怎么办?所以通常还会有一个从DNS服务器,那么这个主从是如何区分的呢?主DNS服务器挂了之后,从DNS要立马顶上,所以就要求它们的数据库是相同的,从DNS服务器的数据库从主DNS服务器那里复制过来的,从DNS服务器从主DNS服务器复制数据库的过程就是区域传送的过程。区域传送也有两类型,如果从DNS服务器刚刚配置好数据库什么东西都没有,下一步就要把主DNS服务器那里把所有的内容都复制过来,这是全量传送;假如主DNS的数据库变化了,从DNS服务器保存的还是原来全量传送时的数据,在这种情况下,从DNS服务器只要复制主DNS服务器被修改的部分即可,用不上全部复制了,这个过程又被称做增量传送。

8、主从DNS之间的解析库序列号、刷新时间、重试时间间隔、过期时长

上文提到,主从DNS服务器之间的解析库需要进行增量传送,两台DNS服务器的解析库要及时同步,但是当主DNS的解析库更新了之后从DNS服务器怎样才能知道呢?解析库是有序列号的,解析库的序列号是随着修改的次数而递增的,就比如主DNS的解析库原来的序号是1,从DNS服务器对主服务器的解析库进行了全量传送,从DNS服务器的解析库的序列号也是1,现在主DNS解析库里面又加了一条记录之后 ,主DNS服务器的解析库序列号又递增为2,此时,从DNS服务器解析库的序列号还是1,从DNS服务器并不知道主DNS服务器的序列号已经发生了改变,从DNS服务器要定期去主DNS服务器上查看解析库序号又没有变化,那么多长时间去查看一次好呢?这个时间我们是可以定义的,这个时间就是刷新时间。现在要考虑一种情况,实际上从DNS服务器向主DNS服务器查询解析库的过程就是两台主机相互通信的过程,只要是通信就有失败的可能,如果从DNS在与主DNS服务器通信时没有刷新成功,假如说是主DNS挂了怎么办?如果第一次通信失败的话,从DNS服务器会认为是网络阻塞,并不会立马认定主DNS已经挂了,在第一次通信失败之后,再隔一会儿从服务器还会再去与主DNS服务器同步一下尝试能不能通信成功,这个隔一会儿就是重试时间间隔(如刷新时间一样都是可以定义的),重试时间应该小于刷新时间,因为重试时间要是大于刷新时间的话,在等待重新刷新时又重新刷新了一次,这样没有任何意义。假如刷新一直失败怎么办?有过期时长,假如一直刷新失败的话,从服务器并不会趁此机会上位,它们比人要有人性多了,假如从服务器一直联系不上主服务器,从服务器认为主服务器已经停止服务了,既然主服务器停止服务器,从服务器提供服务也没有什么意思了,所以从服务器当发现主服务器失联时自己也会停止所有的服务,与主服务器一同“赴死”。所以在我们人的角度来考虑,当主服务器宕机时要尽快修复主服务器,不然从服务器也会跟着罢工的。

9、主从同步的缺点

值得声明的一点是,主从服务器实际上一起提供服务器,并不是一台工作,另一台闲着。它们两个通常会负载,它们是不是负载取决于上一级DNS服务器的解析库记录,同一个域名对应两个IP地址,这样就会负载均衡,如果其中的一个联系不上了,就给第二个来解析。肯定会有这样的情况,假如主从的刷新时间为5分钟,在从服务器刚同步完后的1秒之后主服务器的解析库发生了变化,但是从服务器要等到刷新时间到了之后才能把新增加的内容同步到自己的解析库当中,如果在此期间,正好有人找从服务器解析来解析新增加的这一条内容的话,这样不就解析不到了吗? 通常是这样,当我们在DNS解析库里面加了一条记录之后主DNS服务器会通知从DNS服务器过来同步,即便是刷新还没有到,这样在一定程度上缓解了主从两台主机解析库不一致的情况,可以抓包进行验证。

10、当主机第一个DNS服务器时并没有解析结果时,会再解析第二个DNS服务器吗?

如果一个主机上设置两个DNS服务器,使用第一个的时候解析不成功,那么还会使用第二个吗?并不会的,因为第一个在查找第一次的时候肯定访问了根,根没有找到才返回给你没有找到的信息,这样的话,第一个都解析不出来,第二个肯定也不成的,所以根本没有必要使用第二个DNS。

11、什么时候会用到第二个DNS服务器呢

当第一个DNS服务器连接不上的时候才会使用第二个DNS。

12、域和区域

我们讲课一直讲区域传送,为什么不说是域传送呢?

区域要么正向的,要么是反向的,而域没有正向反之说,域在概念是包括了正向和反向。

13、 FQDN

正向区域和反向区域不是使用一个数据库。

FQDN:full  qualified  domain name,完全限定域名,如www.baidu.com.    注意最后有一个点

主机名+域名的格式就被称为完全限定域名(FQDN)

域是一个概念,比如baidu就是一个域,在这个域之下还有区域,也就是所谓的正向区域和反向区域。

正向区域就是把FQDN解析成IP,而反向区域就是把IP解析成FQDN。

14、一次完整的查询请求经过的过程

hosts(本地hosts文件)

DNS server:local cache(本地缓存)—recurtion(递归)—server cache(服务器缓存)----intertive(迭代)

具体的含义的解释:

  1. 客户端首先在本地的hosts文件查看,没有就找指定的本地DNS服务器
  2. 通常本地DNS都是缓存服务器,比如8.8.8.8  223.6.6.6这些DNS服务器,这些DNS服务器本身不具有解析的功能,只能帮你迭代解析罢了。
  3. 客户端找到223.6.6.6,阿里的DNS首先在自己的缓存当中查找
  4. 如果缓存当中没有,就去迭代(找根解析)
  5. 迭代回来之后在本地缓存
  6. 然后把结果返回到客户端

15、 答案类型

如果DNS帮你找了正确的答案就是肯定答案;如果DNS没的找到答案的话就返回一个否定的答案,否定答案并不代表对方不在线,只是没找到你想到的答案,否定答案其实也有缓存。其实无论是肯定答案还是否定答案都有权威与非权威之分。

那么何为权威答案?权威答案就是你访问www.baidu.com.时,缓存DNS服务器帮你递归时从负责百度这个域里面的区域明确回应的,就是权威答案。

那么何为非权威答案?非权威答案就是访问www.baidu.com.时,缓存DNS服务器没有去找负责百度这外域里面的区域,而是直接从自己的缓存当中找到了答案,这就是非权威应答。

其实这种分布式系统的缓冲带来的好处就是给DNS服务器减小了压力,缺点就是在某一个时刻肯定失去了一致性,就比如一个缓存服务器刚刚缓存了一答案,但是权威DNS服务器更改之后,缓存服务器并不会立马收到,这就失去了一致性,但是还好,当缓存失效之后就会一致了。如果没有缓存的话,的确得到的答案都是权威答案,但是服务器的压力会很大。

最新文章

  1. tomcat开发远程调试端口以及利用eclipse进行远程调试
  2. HTML5 五子棋 - JS/Canvas 游戏
  3. typedef关键字
  4. ubuntu 上安装 NASM 汇编开发工具
  5. web开发-给即将毕业实习生的一点面试经验
  6. sqlserver中索引优化
  7. PHP获取解析URL方法
  8. js深入研究之无法理解的js类代码,extend扩展
  9. 【转】通过Navicat for MySQL远程连接的时候报错mysql 1130的解决方法
  10. Android 通过Dom, Sax, Pull解析网络xml数据
  11. 方向梯度直方图(HOG)和颜色直方图的一些比較
  12. 【php】php 连接数据库
  13. swift UITapGestureRecognizer获取点击事件点击的位置point
  14. ectouch 概述
  15. python面向对象的知识梳理
  16. 广州.NET微软技术俱乐部提技术问题的正确方式
  17. zabbix优化,配合文件,zabbix_get命令
  18. 图片文字css小知识点
  19. Java连接MySQL数据库三种方法
  20. SpringBoot2 【关于:Table 'XXX.hibernate_sequence' doesn't exist】

热门文章

  1. (转)新建maven项目时报错Error:Maven Resources Compiler: Maven project configuration required for module 'XX'解决方法
  2. Python tempfile (临时文件)
  3. PyQt5发布技巧:指定插件(plugins)路径
  4. 【ECNU620】数学题(结论题)
  5. 快速傅立叶变换(FFT)
  6. Ubuntu命令行打开新终端并执行脚本
  7. c#DateTime与unix时间戳互相转换
  8. Windows Azure Virtual Machine (38) 跨租户迁移使用托管磁盘的Azure虚拟机
  9. Eureka服务注册中心错误:com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect
  10. servlet中的IllegalStateException