DNS出现及演化

网络出现的早期 是使用IP地址通讯的,那时就几台主机通讯。但是随着接入网络主机的增多,这种数字标识的地址非常不便于记忆,UNIX上就出现了建立一个叫做hosts的文件(Linux和windows也继承保留了这个文件)。这个文件中记录这主机名称和IP地址的对应表。这样只要输入主机名称,系统就会去加载hosts文件并查找对应关系,找到对应的IP,就可以访问这个IP的主机了。

但是后来主机太多了,无法保证所有人都能拿到统一的最新的hosts文件,就出现了在文件服务器上集中存放hosts文件,以供下载使用。互联网规模进一步扩大,这种方式也不堪负重,而且把所有地址解析记录形成的文件都同步到所有的客户机似乎也不是一个好办法。这时DNS系统出现了,随着解析规模的继续扩大,DNS系统也在不断的演化,直到现今的多层架构体系。

DNS概括

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址互相映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。

DNS的分布数据库是以域名为索引的,每个域名实际上就是一棵很大的逆向树中路径,这棵逆向树称为域名空间(domain name space),如下图所示树的最大深度不得超过127层,树中每个节点都有一个可以长达63个字符的文本标号。

DNS域名解析过程

首先,客户端检测自身缓存,如果没有,检测hosts文件,如果没有,客户端发出DNS请求翻译IP地址或者主机名。DNS服务器在收到客户机的请求后:

1)检查DNS服务器的缓存,若查到请求的地址或名字,即向客户机发出应答信息;

2)若没有查到,则在数据库中查找,若查到请求的地址或名字,即向客户机发出应答信息;

3)若没有查到,则将请求发给根域DNS服务器,并依序从根域查找顶级域,由顶级域查找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的DNS服务器发出应答信息,DNS服务器收到应答后先在缓存中存储,然后将解析结果发给客户机。

4)若没有找到,则返回错误信息。

DNS分类

主DNS服务器:就是一台存储着原始资料的DNS服务。

从DNS服务器:使用自动更新方式从主DNS服务器同步数据的DNS服务器。也称辅助DNS服务器。

备注:一般生产环境,主DNS服务器做管理使用,从DNS服务器提供服务。

缓存服务器:不负责本地解析,采用递归方式转发客户机查询请求,并返回结果给客户机的DNS服务器。同时缓存查询回来的记过,也叫递归服务器。

转发器:这台DNS发现非本机负责的查询请求时,不再向根域发起请求,而是直接转发给指定的一台或者多台服务器。自身并不缓存查询结果。

DNS中记录类型

DNS命名规范

1.  26个英文字母

2. “0,1,2,3,4,5,6,7,8,9,”十个数字

3. “-”(英文中的连词号)

4.  最多63字节长度

备注:要不按照这个规范命名,bing支不支持? 支持,不合适,不建议。 非要不按照这个,怎么办? master-view文件上配置check-name ignore;

DNS三个命令:DIG、NSLOOKUP、HOST介绍

yum install bind-utils -y

DNS原理入门 http://www.ruanyifeng.com/blog/2016/06/dns.html

DNS发展趋势

1、DNSMASQ

DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。它服务那先只在本地使用的域名,这些域名是不会在全球的DNS服务器中出现的。

DHCP服务器和DNS服务器结合,并且允许DHCP分配的地址能在DNS中正常解析,而这些DHCP分配的地址和相关命令可以配置到每台主机中,也可以配置到一台核心设备中(比如路由器),DNSmasq支持静态和动态两种DHCP配置方式。

有一些公司在每台服务器上都起着dnsmasq,充当本地dns缓存服务,来提高dns解析性能同时减轻dnsserver的压力。

2、HTTPDNS

但凡使用域名来给用户提供服务的互联网企业,都或多或少无法避免在有中国特色的互联网环境中遭遇到各种域名被缓存、用户跨网访问缓慢等问题。

首先是域名缓存,不同运营商、不同节点的缓存时间设置的差别较大。这样在流量切换时,就会产生新、旧应用数据不一致的现象。

其次就是域名解析过了太多层的nat,这就导致dns获取客户端地址时很难准确定位,从而智能dns的准确度大打折扣。

最近几年httpdns出现了,用户明确的知道我在访问某厂的服务时,应该去找哪个ip要对应的域名,实现这个的前提是你可以左右用户的访问习惯,目前应用最合适的场景是app。

  • DNS中递归查询和迭代查询的区别

1、 递归查询: 一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交客户机。

2、 迭代查询(反复查询): 一般DNS服务器之间属迭代查询,如:若DNS2不能响应DNS1的请求,则它会将DNS3的IP给DNS2,以便其再向DNS3发出请求。

以一个DNS请求解析为例:

1)用户发起域名请求到dnsA,这时dnsA有这个记录,将结果返回给用户,这个过程是递归查询。

2)用户发起域名请求到dnsA,这时dns没有这个记录,它去向dnsB问有没有这个记录,以此类推,直到把结果返回给用户,这个过程是递归查询。

3)用户发起域名请求到dnsA,这时dnsA没有这个记录,它告诉用户,我没有这个记录,你去问dnsB吧,这个过程是迭代查询。

DNS介绍的更多相关文章

  1. DNS 介绍

    DNS 介绍 DNS 为 Domain Name System (域名系统的缩写),它是一种将ip地址转换为对应的主机名或将主机名转换成与之对应的ip地址的一种服务机制.DNS使用TCP和UDP,端口 ...

  2. DNS介绍与安装使用

    DNS简介 DNS是互联网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.DNS使用TCP和UDP的53号端口. DNS服务的基本概念 在使用DNS前需要了解 ...

  3. Linux服务之DNS介绍

    DNS-------Domain Name System域名系统 介绍:DNS就是把域名和IP地址联系在一起的服务,有了DNS服务器,你就不用输入IP地址来访问一个网站,可以通过输入网址访问.     ...

  4. 31、DNS介绍

    [root@centos6 ~]# dig @8.8.8.8 www.baidu.com +trace ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.3 ...

  5. Domain Name System (DNS)

    1.DNS和WINS的作用 DNS:(Domain Name Server,域名服务)用于实现域名和IP地址的相互转换. WINS:(Windows Internet Name Service) 用来 ...

  6. DNS服务器的搭建

    更详细的dns笔记整理: http://services.linuxpanda.tech/DNS/index.html 1 DNS介绍 DNS(Domain Name System,域名系统),因特网 ...

  7. centos 6.5 DNS服务器 搭建

    一.DNS 介绍 DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,DNS协议运行在UDP协议之上,使用端口号53(Domain), 95 ...

  8. CentOS7安装和配置dns服务器

    (1)dns介绍 1.基本介绍 名字解析: NetBIOS名:localhost wins hosts FQDN:完全限定域名,www.baidu.com hosts文件: 作用:实现名字解析,主要为 ...

  9. HTTP DNS

    试用地址 https://www.dnspod.cn/httpdns/demo 哪些人适合使用HTTP DNS 1.希望降低访问延迟.减少跨网访问的资讯.游戏类APP: 2.希望降低连接失败率,提升业 ...

随机推荐

  1. 谈谈关于Python里面小数点精度控制的问题

    基础 浮点数是用机器上浮点数的本机双精度(64 bit)表示的.提供大约17位的精度和范围从-308到308的指数.和C语言里面的double类型相同.Python不支持32bit的单精度浮点数.如果 ...

  2. [BZOJ 1260][CQOI2007]染色(DP)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1260 分析: f[i][j]表示i~j刷成s[i]~s[j]这个样子需要的最小次数 则 ...

  3. Matlab 的reshape函数

    看Matlab的help文档讲得不是清楚. 先给上一段代码: >> a=[1 2 3;4 5 6;7 8 9;10 11 12]; >> b=reshape(a,2,6); 这 ...

  4. Android开发之ViewPager做新手引导界面

    先看一下我们要开发的界面(三张图片,滑到最后一个会出现开始体验的Button,下面的小红点会跟着一起滑动): 首先看一下布局文件: <?xml version="1.0" e ...

  5. UITextView的使用详解

    //初始化并定义大小 UITextView *textview = [[UITextView alloc] initWithFrame:CGRectMake(20, 10, 280, 30)]; te ...

  6. zabbix监控网络的出入口流量

    首先我们登录到zabbix 点击配置---->模板-->Template OS Linux 下的监控项 点击右上角的添加监控项目 我们的服务器是在Ucloud上的,我们的网卡名称为eth0 ...

  7. Echarts-画柱状,折线图

    导入echarts包 <script src='../scripts/libraries/echarts/echarts-all.js'></script> 堆积图js var ...

  8. Maven-常用命令

    mvn archetype:create :创建 Maven 项目 mvn compile :编译源代码 mvn deploy 发布项目 mvn test-compile :编译测试代码 mvn te ...

  9. 【CodeForces 699B】One Bomb

    r[i],c[i]分别表示第i行有几个*,第i列有几个*. 枚举每个位置如果c[i]+r[j]-(本身是不是*)==总*数,则该位置即为答案. #include<cstdio> #incl ...

  10. 【转】HTTP中的长连接和短连接分析

    1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议.IP协议主要解决网络路由和寻址问 ...