DNS解惑之基本概念(1)
常见问题
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(迭代)
具体的含义的解释:
- 客户端首先在本地的hosts文件查看,没有就找指定的本地DNS服务器
- 通常本地DNS都是缓存服务器,比如8.8.8.8 223.6.6.6这些DNS服务器,这些DNS服务器本身不具有解析的功能,只能帮你迭代解析罢了。
- 客户端找到223.6.6.6,阿里的DNS首先在自己的缓存当中查找
- 如果缓存当中没有,就去迭代(找根解析)
- 迭代回来之后在本地缓存
- 然后把结果返回到客户端
15、 答案类型
如果DNS帮你找了正确的答案就是肯定答案;如果DNS没的找到答案的话就返回一个否定的答案,否定答案并不代表对方不在线,只是没找到你想到的答案,否定答案其实也有缓存。其实无论是肯定答案还是否定答案都有权威与非权威之分。
那么何为权威答案?权威答案就是你访问www.baidu.com.时,缓存DNS服务器帮你递归时从负责百度这个域里面的区域明确回应的,就是权威答案。
那么何为非权威答案?非权威答案就是访问www.baidu.com.时,缓存DNS服务器没有去找负责百度这外域里面的区域,而是直接从自己的缓存当中找到了答案,这就是非权威应答。
其实这种分布式系统的缓冲带来的好处就是给DNS服务器减小了压力,缺点就是在某一个时刻肯定失去了一致性,就比如一个缓存服务器刚刚缓存了一答案,但是权威DNS服务器更改之后,缓存服务器并不会立马收到,这就失去了一致性,但是还好,当缓存失效之后就会一致了。如果没有缓存的话,的确得到的答案都是权威答案,但是服务器的压力会很大。
DNS解惑之基本概念(1)的更多相关文章
- DNS解惑之资源记录(2)
1.区域解析库 每个域都要维护一个区域解析库,而区域解析库都是由一条条的记录组成的,而每一条记录就被称为资源记录(resource record RR). 我们知道大多数域名下面都不仅仅有www服 ...
- DNS拾遗(二)
MX Record补充 MX记录有优先级的概念,数字越小表示优先级越高.所以一个域可以配置多个不同优先级的MX记录,如果邮件通过第一优先级记录无法递送,则采用第二优先级,以此类推. TXT Recor ...
- DNS拾遗(一)
最近帮朋友注册域名配置主机,碰到一些DNS上的一些概念,惭愧于有一些东西已经忘记是啥意思,于是决定重新学习一下DNS方面的基本概念. 常用概念: TTL: TTL为Time to live的缩写,网络 ...
- 转:DNS拾遗
最近帮朋友注册域名配置主机,碰到一些DNS上的一些概念,惭愧于有一些东西已经忘记是啥意思,于是决定重新学习一下DNS方面的基本概念. 常用概念: TTL: TTL为Time to live的缩写,网络 ...
- DNS解析全过程分析
DNS解析过程 1.检查浏览器缓存中是否缓存过该域名对应的IP地址 用户通过浏览器浏览过某网站之后,浏览器就会自动缓存该网站域名对应的IP地址, 当用户再次访问的时候,浏览器就会从缓存中查找该域名对应 ...
- ICMP协议、DNS、ARP协议、ping、DHCP协议
1.ICMP协议 1)ICMP协议,即:网络控制消息协议(Internet Control Message Protocol) 2)ICMP是网络层协议,因为ICMP报文是装在IP数据报中,作为它的数 ...
- DNS介绍与安装使用
DNS简介 DNS是互联网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.DNS使用TCP和UDP的53号端口. DNS服务的基本概念 在使用DNS前需要了解 ...
- DNS(转载)
最近帮朋友注册域名配置主机,碰到一些DNS上的一些概念,惭愧于有一些东西已经忘记是啥意思,于是决定重新学习一下DNS方面的基本概念. 常用概念: TTL: TTL为Time to live的缩写,网络 ...
- 服务管理-DNS
DNS服务 DNS(Domain Names System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP地址.通 ...
随机推荐
- 【西北师大-2108Java】第四次作业成绩汇总
[西北师大-2108Java]第四次作业成绩汇总 深入理解程序设计中算法与程序的关系: 深入理解java程序设计中类与对象的关系: 理解OO程序设计的第2个特征:继承.多态: 学会采用继承定义类设计程 ...
- 微信小程序picker重写,精确到时分秒
https://developers.weixin.qq.com/miniprogram/dev/component/picker.html 微信小程序提供的picker组件,只精确到分,项目中需要秒 ...
- 【转】springboot结合swagger生成接口文档
前后台分离的开发渐渐已成趋势.那么前后端的沟通就成了问题,包括移动端,web端.如果有一个东西在我们写完代码的时候,自动将接口的所有注释,调用文档提供出来,是不是一件很美好的事情.那就是使用swagg ...
- python-使用skimage显示图片
import skimage.io import skimage.transform import matplotlib.pyplot as plt img = skimage.io.imread(' ...
- 第十周计划周二&周三计划
今天又一次被导师训了,怎么也达不到他的要求,好像我俩不在一条线上.所以现在重新整理一遍思路,继续走. 我认为重点还是主题追踪这一块,但是主题追踪的结果以及显示是个问题,目前还是打算做出来当天最热的前几 ...
- luoguP2824 [HEOI2016/TJOI2016]排序(二分答案做法)
题意 这题的思路实在巧妙. 首先我们肯定无法对区间进行sort,那么考虑如何使得sort简化. 问:如果给的序列是一个0-1序列,让你区间排序,那么怎么做? 答:建一颗线段树维护sum,求出当前区间中 ...
- (三十三)golang--面向对象之继承
继承可以解决代码复用: 实现:只需要在结构体中嵌套一个匿名结构体: 结构体可以使用匿名结构体中所有字段核方法:无论是大写还是小写: 可以简化访问匿名结构体中的属性和方法: 当该结构体和匿名结构体有相同 ...
- 深圳龙华有轨电车BIM项目
本项目是“龙华有轨电车BIM+GIS运维管理平台“研发组成的内容之一,包含站台.电车.变电所等模型绘制. 龙华区有轨电车是深圳市的一条位于龙华区的有轨电车线路,项目规划了三条线路,总长51公里.试验线 ...
- Linux安装部署jdk+tomcat+mysql
Linux安装部署测试环境 1. JDK安装下载 安装 yum search jdk 找到合适的jdk版本,以下图中的版本为例 yum install java-1.8.0-openjdk.x86_6 ...
- LibLog 类库 分析
前期思考: Microsoft.Logging 是否可用? 是否需要提供默认的 Logger 实现? 不需要.1,用户自己开启日志功能,设置开启属性,即可打印出相应的日志. LibLog 类库分析: ...