本文主要包括DNS的简单介绍,DNS查询的原理介绍和DNS负载均衡应用的简单介绍。

1、DNS简介

1.1 什么是DNS

首先我们来了解DNS是什么。下面引用维基百科的解释:

域名系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

我们知道计算机网络中的通信实际上是需要通过IP来进行的,但是让使用者记住那么多复杂无规律的IP地址是不现实的,因此人们发明了域名,使用者只需要记住域名,然后通过域名即可访问对应的网站,而DNS就是负责将我们平时使用的域名如163.com、google.com等解析成对应的IP地址,然后让客户端和该IP地址进行通信的这样一个系统。

上面的维基百科说DNS是一个分布式的数据库其实也是合理的,因为DNS主要的功能就是存储着各类域名和对应的IP地址,DNS请求可以理解成查询数据库的操作。而因为DNS需要给全球所有上网的用户频繁使用,因此它必须是分布式(地域广)、高并发(请求多)、高可用(重要性高)的一个系统。

1.2 DNS解析类型

DNS的解析类型其实也有很多种,我们比较常接触到的就是A类和CNAME,当然现在IPv6开始普及了也就有AAAA类(相当于IPv6版的A类)。

  • A-将域名指向一个IPV4地址

    比如将wikipedia.org这个域名解析到103.102.166.224这个IPv4地址;

  • CNAME-将域名指向另外一个域名

    比如将wikipedia.org这个域名解析到wikipedia.org.cn

  • AAAA-将域名指向一个IPV6地址

    比如将wikipedia.org这个域名解析到2001:df2:e500:ed1a::1这个IPv6地址;

  • NS-将子域名指定其他DNS服务器解析

    比如你在阿里云购买的域名,但是想要使用网易云来提供DNS解析服务,那就添加一个NS记录,将记录值设置成网易云的DNS服务器域名;

  • MX-将域名指向邮件服务器地址

    设置邮箱时,让邮箱能收到邮件,就需要添加 MX 记录。MX全称为mail exchanger,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器。例如,当有人发邮件给wikipediauser@wikipedia.org时,系统将对wikipedia.org进行DNS中的MX记录解析。如果MX记录存在,系统就根据MX记录的优先级,将邮件转发到与该MX相应的邮件服务器上。

  • TXT-文本长度限制一般为255,通常做SPF记录(反垃圾邮件)

    SPF是 Sender Policy Framework 的缩写,一种以IP地址认证电子邮件发件人身份的技术。接收邮件方会首先检查域名的SPF记录,来确定发件人的IP地址是否被包含在SPF记录里面,如果在,就认为是一封正确的邮件,否则会认为是一封伪造的邮件进行退回。

  • CAA-CA证书颁发机构授权校验

    CAA(Certificate Authority Authorization),即证书颁发机构授权。是一项新的可以添加到DNS记录中的额外字段,通过DNS机制创建CAA资源记录,可以限定域名颁发的证书和CA(证书颁发机构)之间的联系。未经授权的第三方尝试通过其他CA注册获取用于该域名的SSL/TLS证书将被拒绝。

    域名设置 CAA 记录,使网站所有者,可授权指定CA机构为自己的域名颁发证书,以防止HTTPS证书错误签发,从而提高网站安全性。

其他的还有诸如SRV、显性/隐性URL等解析,具体可以查看对应的域名供应商提供的DNS解析服务说明文档。

2、DNS查询过程

2.1 DNS服务器类型

DNS服务器一般分三种,根DNS服务器,顶级DNS服务器,权威DNS服务器。

  • 根DNS服务器是最高层次的DNS服务器,全球共有13套,它并不提供直接的DNS域名解析服务,而是负责将对应的顶级域名DNS服务器的地址返回给查询的客户端

  • 顶级域名top level domain,简写为 TLD),即对应图中第二层的顶级DNS服务器负责的顶级域名,同样的,顶级域名服务器也不提供直接的DNS域名解析服务,而是负责将对应的权威域名服务器返回给查询的客户端

  • 权威DNS服务器为图中的第三层,这时候权威DNS服务器会返回对应域名的IP地址,客户端拿到了IP地址就可以进行访问了。

那么图中的第四层example.wikipedia.orgwikipedia.org的子域名,也可以叫做二级域名,第五层www.example.wikipedia.org是第四层example.wikipedia.org的子域名,也可以叫做三级域名,以此类推。

2.2 DNS请求过程

接下来我们以访问维基百科(wikipedia.org)为例,对应下图进行解析:

  1. 首先客户端发送请求需要访问wikipedia.org,然后第一步是访问本地的DNS缓存;
  2. 本地的DNS缓存会读取系统下对应的hosts文件,也就是Linux下的/etc/hosts或Windows下的C:\Windows\System32\drivers\etc\hsots,如果这里面定义了wikipedia.org这个域名对应的IP地址,则直接访问这个IP,就没有后面什么事儿了;
  3. 如果本地的缓存文件没有记录,那么客户端就会发送请求到本地DNS服务器,一般来说会是ISP默认提供的DNS服务器,当然我们也可以手动指定成第三方的DNS服务器。本地DNS服务器查询服务器内的记录,如果有则直接返回记录给客户端;
  4. 如果本地DNS服务器没有记录,那么就会访问根域名服务器,询问wikipedia.org对应的顶级域名服务器的地址;
  5. 根域名服务器根据请求判断出是访问.org域名的请求,就会给客户端返回.org顶级域名服务器地址;
  6. 本地DNS服务器获取到地址之后,发送请求给.org顶级域名服务器,询问wikipedia.org对应的权威域名服务器的地址;
  7. .org顶级域名服务器给客户端返回了wikipedia.org权威域名服务器的地址;
  8. 本地DNS服务器获取到地址之后,发送请求给wikipedia.org权威域名服务器,询问wikipedia.org的IP地址;
  9. wikipedia.org权威域名服务器本地DNS服务器返回了wikipedia.org的IP地址;
  10. 本地DNS服务器给客户端返回了wikipedia.org的IP地址,客户端和这个IP建立连接,开始传输数据,该次DNS请求结束。

实际上上面的是最长的DNS查询情况,因为一般情况下我们的DNS本地服务器就会存着对应的DNS缓存记录,这样在DNS查询的时候直接就可以返回本地的缓存给客户端,从而避免了后面的递归查询。

那么要是我们修改了域名的DNS解析记录呢?比如wikipedia.org的IP地址从103.102.166.224修改成103.102.166.225,这就涉及到解析生效的时间问题,也就是所谓的TTL,解析生效时间取决于本地DNS缓存的解析记录的TTL到期时间,一般默认为10分钟。例如解析记录设置的TTL值为 10 分钟,则理论上全球解析生效时间需要10分钟;解析记录设置的TTL值为60秒,则理论上全球解析生效时间需要60秒。

3、DNS的用途

我们已经知道DNS最基本也是最重要的作用就是进行域名和IP地址之间对应关系的记录和查询,除此之外,DNS还可以用作负载均衡。

首先我们要知道,域名和IP并不是一对一的关系,而是多对多的关系。也就是说一个IP可以绑定多个域名,一个域名也可以解析到多个IP。有了这个特性,我们就可以利用DNS来实现负载均衡。

注意负载均衡并非只有DNS这一种方式

3.1 内部负载均衡(SLB)

例如,一个应用要访问数据库,在这个应用里面应该配置这个数据库的IP地址,还是应该配置这个数据库的域名呢?显然应该配置域名,因为一旦这个数据库,因为某种原因,换到了另外一台机器上,而如果有多个应用都配置了这台数据库的话,一换IP地址,就需要将这些应用全部修改一遍。但是如果配置了域名,则只要在DNS服务器里,将域名映射为新的IP地址,这个工作就完成了,大大简化了运维。

在这个基础上,我们可以再进一步。例如,某个应用要访问另外一个应用,如果配置另外一个应用的IP地址,那么这个访问就是一对一的。但是当被访问的应用撑不住的时候,我们其实可以部署多个。但是,访问它的应用,如何在多个之间进行负载均衡?只要配置成为域名就可以了。在域名解析的时候,我们只要配置策略,这次返回第一个IP,下次返回第二个IP,就可以实现负载均衡了。

3.2 全局负载均衡(GSLB)

还是刚刚上面的那个图,我们加入了GSLB1和GSLB2在权威域名服务器后面,权威服务器之前的访问过程和上面提到的DNS请求过程一样,这里我们还是以访问维基百科(wikipedia.org)为例。

  • 我们先对维基百科(wikipedia.org)做一个CNAME解析,让它解析到glsb.wikipedia.org这个GSLB1服务器;
  • 客户端请求到权威域名服务器之后,获得了一个glsb.wikipedia.org的地址,然后客户端就访问glsb.wikipedia.org这个服务器,注意这个时候glsb.wikipedia.org应该是充当了权威域名服务器的角色;
  • glsb.wikipedia.org接受到请求之后,可以根据来源的IP判断是哪个地区的请求,假设是中国,那就给它返回一个cn.glsb.wikipedia.org的GSLB2的服务器地址;
  • GSLB2根据接受到的请求,返回一个离客户端最近服务器的IP地址,从而实现了GSLB的效果。

GSLB和我们常说的LVS、NGINX负载均衡等方式的一个比较大的不同就是在覆盖范围特别广的时候使用效果会更好一些。比如在中国的服务器业务,要扩展到美国,假设业务的访问量翻倍,要增加一倍的机器,可以选择在原有的集群上增加一倍的机器,或者在美国再部署一套同样的服务器,然后配置DNS的GSLB服务器来实现。显然后者的效果会更好,因为美国的用户访问中国的服务器在速度上肯定是没有访问美国的服务器快。

这里只是打一个不太恰当的比喻,实际上访问量翻倍肯定没这么简单。但是在这种跨地域的负载均衡策略上,DNS的GSLB是一个不错的选择。

DNS原理篇01-DNS原理介绍相关推荐

  1. 第十四课 k8s源码学习和二次开发原理篇-调度器原理

    第十四课 k8s源码学习和二次开发原理篇-调度器原理 tags: k8s 源码学习 categories: 源码学习 二次开发 文章目录 第十四课 k8s源码学习和二次开发原理篇-调度器原理 第一节 ...

  2. Spark原理篇之工作原理

    1 Spark背景 Spark是一个加州大学伯克利分校(UC Berkeley AMP)开发的一个分布式数据快速分析项目.它的核心技术是弹性分布式数据集(Resilient distributed d ...

  3. 第33篇:DNS劫持攻击原理讲解及溯源分析的常规步骤

     Part1 前言  在世界杯举办期间,DNS劫持事件估计会和链路劫持事件一样,风险提升很多.上期分享了一篇<第32篇:某运营商链路劫持(被挂博彩页)溯源异常路由节点(上篇)>,本期就讲一 ...

  4. dns服务器系统架构,详解 DNS 与 CoreDNS 的实现原理

    原文链接:https://draveness.me/dns-coredns [编者的话]域名系统(Domain Name System)是整个互联网的电话簿,它能够将可被人理解的域名翻译成可被机器理解 ...

  5. 例说DNS递归/迭代名称解析原理

    以下内容摘自笔者最新年度巨作,广受好评的--<深入理解计算机网络>书中.本书详细内容及读者评价可从这里了解:http://item.jd.com/11165825.htmlhttp://p ...

  6. DNS系统(服务器)的工作原理及攻击防护

    转载:http://www.guanwei.org/post/applicationsecurity/06/DNS-Security.html 国际著名网络安全专家Roland Dobbins曾说过, ...

  7. domain,DNS,冗余,DNS劫持的大致原理

    一.domain 解释:域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation).信任关系是连接在域与域之间的桥梁.当一个域与其他域建 ...

  8. 【原理】#01红外热成像仪的工作原理介绍

    红外热成像仪是电测中比较特殊的一种仪器设备,在温度测试领域有着广泛的应用. 红外热成像仪测温的原理是怎么样的?如何选择合适的热成像仪? 安泰小课堂将分两期视频为大家进行揭秘. 本期内容将重点讲解红外热 ...

  9. DNS原理及局域网DNS劫持实验

    DNS原理及局域网DNS劫持实验 DNS原理及局域网DNS劫持实验 1. DNS原理 1.1 DNS是什么? 1.2 为什么需要DNS? 1.3 DNS工作原理 1.3.1 DNS的递归和迭代 1.3 ...

最新文章

  1. 【学术相关】发表 SCI 论文有哪些实用工具?
  2. 数据可用不可见,百度新版本联邦学习PaddleFL来了
  3. 数据结构及算法学习——写在前面的话
  4. 循环增加li id_循环老化对于锂离子电池中锂和电解液分布的影响
  5. Linux怎么查看编译ARM平台程序的编译器arm-linux-gcc
  6. openssl 升级
  7. 组装台式计算机的部件,组装台式电脑的配置清单
  8. 台灯c语言,Jya无线台灯C上手体验:从新界说光的含义
  9. git 如何下载单个文件夹或者单个文件
  10. android studio 自定义应用主题,Android studio 设置主题
  11. 微信投票的自动运行脚本
  12. .csv是什么文件格式,什么软件可以打开?xls与csv文件是什么区别?功能和作用上有什么不同?
  13. 如何在 Mac 上录制屏幕
  14. C++写文件时覆盖与否的问题
  15. 一起装逼!开平方的七种算法
  16. ArcGIS与插值(一): 统计与地统计
  17. AI技术实践|用腾讯云录音文件识别让无字幕视频自动生成字幕
  18. 黑苹果NVIDIA显卡驱动程序【 WebDriver-378.10.10.10.20.108+支持macOS 10.13.1 High Sierra (17B1002)版本】
  19. java实现蒲丰投针求_蒲丰投针问题
  20. java 组合优与继承_Java中为什么老鸟要告诉你优先使用组合而不是继承?

热门文章

  1. 7-8 逆序输出英文语句
  2. Kaggle从google drive下载文件的方法
  3. 计算机毕业论文选题java毕业设计软件基于SSM实现的固定资产管理系统
  4. 1000套web前端期末大作业 HTML+CSS+JavaScript网页设计实例 企业网站制作【建议收藏】
  5. 什么是分布式认知工业互联网?
  6. 通过Python设计串口调试助手,结合FPGA串口工程进行验证
  7. 计算机网络各层级协议报文形式详解
  8. Android歌词秀设计思路(6)运用Proxy设计模式简化歌词播放服务的使用
  9. 安科瑞交流三相表电表在越南光伏的应用(防逆变)
  10. 计算机基础课程三板块的分数,中南民族大学计算机基础教学实施办法