后台系统可扩展性学习笔记(三)DNS机制原理

文章目录

  • DNS概念梳理
  • 域名基本概念
  • 资源记录基本概念
  • 路由策略
  • DNS 域空间结构
  • 实现原理
    • 复制机制
    • 查询机制
    • 缓存机制
  • 参考

DNS概念梳理

DNS(Domain Name System)相当于互联网的通讯录,能够把域名翻译成 IP 地址。
从技术角度来讲,DNS 是个层次型分布式数据库,加上一些既定协议,包括数据库的查询更新机制、不同服务器间数据库信息的复制机制,以及数据库模式(Schema),除层次型数据库外,还有关系型数据库和网状数据库。

DNS 源于互联网的早期,当时的互联网还是美国国防部(the United States Department of Defense)出于研究目的而建立的小型网络。通过一个 HOSTS 文件来管理网络中各个计算机的主机名,而这份 HOSTS 文件放在一台集中管理的服务器上,需要解析主机名的每个站点都要先下载这份文件。

随着网络中主机数量的不断增加,HOSTS 文件更新过程所产生的流量以及文件大小问题逐渐暴露出来。于是,期望建立一个能够灵活扩展,支持各种数据类型的分布式主机名管理系统,作为互联网中关键的基础设施,而这个新的分布式系统就是DNS(Domain Name System)

域名基本概念

在这里插入图片描述
其中,各部分都有对应的名称:

  • 根域(Root domain):树根,表示未命名的一级,例如www.example.com.末尾的点号
  • 顶级域(Top-level domain):用来表示国家、区域或者组织类型,例如.com、.edu
  • 二级域(Second-level domain):长度不固定,由个人或组织注册,例如example.com.中的example部分
  • 子域(Subdomain):从二级域派生而来,由持有二级域的组织/个人自行创建,例如www.example.com
  • 主机名/资源名(Host or resource name):树结构中的叶子,例如api.aws.amazon.com中最左边的api
    图中的 FQND 是指完整域名(Fully Qualified Domain Name),由主机名和域名构成,能够唯一标识主机在树结构中的位置。顶级域由管理 DNS 的域名注册机构负责维护,按国家或区域分配给各个组织。
    mydomain.microsoft.com.(末尾点号.表示根域)为例:
    在这里插入图片描述

资源记录基本概念

资源记录(resource record,简称 RR)组成了 DNS 数据库,常见的有以下几种:

  • A 记录(Address record):地址记录,把域名指向 IP 地址
  • AAAA 记录(IPv6 address record):IPv6 地址记录,相当于支持 IPv6 的 A 记录
  • CAA 记录(Certification Authority Authorization):证书颁发机构授权记录,用来指定允许哪些 CA 机构为域名颁发证书
  • CNAME 记录(Canonical name record):别名记录,把一个域名指向另一个域名,或其它 CNAME 记录、A 记录
  • PTR 记录(PTR Resource Record):PTR 记录,把 IP 地址指向域名,与 CNAME 的区别在于直接结束并返回结果,多用于反向解析(通过 IP 反查域名)

其中,CAA 记录是一种证书安全机制,CA 机构颁发证书时会检查 CAA 记录,若未授权就拒绝为该域名颁发证书

路由策略

除基本的映射规则外,DNS 服务可能还支持一些路由策略,比如:

  • 基于权重的路由策略(Weighted routing policy):根据指定的权重值按优先级分发流量
  • 基于延迟的路由策略(Latency routing policy):根据延迟情况解析域名,比如选择延迟最小的 IP
  • 基于地理位置的路由策略(Geolocation routing policy):根据用户的地理位置(各国、各大洲等)解析域名
  • 基于地理位置邻近程度的路由策略(Geoproximity routing policy):根据用户所在地与目标资源所在地的临近程度解析域名
  • 故障转移路由策略(Failover routing policy):用于主动-被动故障转移模式,一个 IP 出问题之后换用另一个 IP
  • 多值应答路由策略(Multivalue answer routing policy):简单的 DNS 层负载均衡,可配置一对多映射,从中随机选取

DNS 域空间结构

DNS 域空间被划分成区域(Zone)进行管理,区域相当于 DNS 服务器的管辖范围:
在这里插入图片描述
一个 DNS 数据库会被划分成多个区域,每个区域包含域空间中连续的部分的资源记录及其 owner 信息,所形成的区域文件(Zone files)由 DNS 服务器负责维护,而一个 DNS 服务器能够管理零到多个区域。
每个区域对应特定的域名,叫做该区域的根域名(Root domain),区域中包含所有以区域根域名结尾的域名信息。区域文件中的第一条记录是 SOA(Start of Authority)资源记录,标识出该区域中作为最佳信息源的主 DNS 域名服务器,以及信息更新相关的一些定时器(如 Refresh Interval、Expire Time 等等)。
委托
区域中的域名可以委托给另一个位于不同 DNS 服务器上的区域,委托(Delegation)就是把 DNS 空间的一部分交由另一个 DNS 服务器负责的过程,比如另一个组织、部门或工作组。这种委托关系通过 NS 资源记录来标识,记录中指定了被委托的区域和与之对应的权威服务器域名。
跨区域委托是 DNS 最初的设计目标之一,为了满足:
1、把一个 DNS 域的管理工作委托给多个组织或部门
2、把一个大 DNS 数据库的维护工作分散到多个 DNS 服务器上,以提升域名解析性能,和容错性
3、根据组织隶属关系,把主机放到合适的域下
需要跨区域解析域名时,就询问 NS 记录中的目标区域的 DNS 服务器,例如,microsoft.com.被委托给microsoft.commydomain.microsoft.com两个区域管理:
在这里插入图片描述

实现原理

复制机制

域空间中的同一部分可以由多个区域来表示,分为:

  • 主区域(Primary)
  • 辅助区域(Secondary)
  • 存根区域(Stub)

区域下所有记录的更新都发生在主区域,辅助区域和存根区域都是只读的主区域副本,区别在于存根区域只含用来标识权威服务器(托管这三种区域的 DNS 服务器)的记录。而托管主区域的 DNS 服务器就是该区域的主 DNS 服务器,托管辅助区域的 DNS 服务器是辅助 DNS 服务器。
主 DNS 服务器(或辅助 DNS 服务器)上的区域文件可以被复制到多个 DNS 服务器,这个过程叫区域传输(Zone transfer),传输方式分为 2 种:

  • 推:主 DNS 服务器在区域文件发生变化时,通知一个或多个辅助 DNS 服务器
  • 拉:辅助 DNS 服务器上的 DNS 服务启动时,以及区域文件的刷新间隔过期时,辅助服务器就主动向主 DNS 服务器询问变化
    根据所传输的数据量分为:
  • 全量:AXFR(A Full Zone Transfer),传输所有记录
  • 增量:IXFR(incremental zone transfer),只传输有改动的记录

查询机制

DNS 查询发生在 DNS 客户端与 DNS 服务器,以及两个 DNS 服务器之间,一般会一次性查询特定域名的一组记录,比如其所有 A 记录,具体的,DNS 查询分为 2 种:

  • 递归查询(Recursive):DNS 服务器必须联系相关的其它 DNS 服务器
  • 迭代查询(Iterative):DNS 服务器根据本地数据作出响应,如果实在无法解析,就返回一个否定响应

前者常用于 DNS 客户端(如 DNS 解析器)和 DNS 转发服务,如果仅靠本地数据(本地区域文件以及之前查询的结果缓存)无法解析,就上升到根 DNS 服务器(转发服务先上升到源服务器)。后者常用于 DNS 服务查询其域之外的域名,此时可能要询问多个外部 DNS 服务器才能完成解析,以www.whitehouse.gov为例:
在这里插入图片描述
具体查询过程如下:
1、客户端向本地DNS服务器发起递归查询
2、本地DNS服务器向根DNS服务器发起迭代查询
3、根DNS服务器返回 .gov域名服务器的引用
4、本地DNS服务器向.gov域名服务器发起迭代查询
5、.gov域名服务器返回whitehouse.gov域名服务器的引用
6、本地DNS服务器向whitehouse.gov域名服务器发起迭代查询
7、whitehouse.gov域名服务器回应迭代查询(www.whitehouse.gov的 IP 地址)
7、本地DNS服务器回应最初的递归查询(www.whitehouse.gov的 IP 地址)
引用(DNS Referral)是指间接答案:

DNS转介。术语引用表示对查询的响应,该查询不包含答案部分(为空),但包含一个或多个更接近所需查询问题的权威名称服务器(位于域权限部分)。

缓存机制

资源记录中的 TTL(Time-to-Live)值相当于该记录的保质期,其它 DNS 服务器根据 TTL 来决定该把这条信息缓存多久。如果记录没有指定自身的 TTL 的话,DNS 服务器会从 SOA 记录继承默认 TTL,以防其它 DNS 服务器对资源记录进行扩展缓存

客户端的 DNS 解析器也会缓存所收到的 DNS 查询结果,缓存时长同样遵循 TTL。DNS 服务器用查询缓存应答时,会把缓存的 TTL 传递下去,接收方以收到的 TTL 值为准(而不根据自己的 TTL 重置),以保证资源记录能够正常过期

设置 TTL 需要考虑缓存信息的准确性,以及 DNS 服务器的效用和网络流量问题,二者有些冲突。如果 TTL 太短,出现旧信息的可能性虽然降低了,但 DNS 服务器的效用问题和流量问题就冒出来了,而 TTL 太长的话,缓存信息可能会过时,意味着解析器可能会返回错误的结果,但能够减轻效用问题和流量问题.

参考

http://www.ayqy.net/blog/dns/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376588.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

后台系统可扩展性学习笔记(四)CDN机制原理

文章目录概念梳理CDN拓扑结构CDN内容分发方式架构原理工作原理实现原理概念梳理 CDN(Content Delivery Network,内容分发网络)是由分布在不同地理位置的代理服务器及其数据中心组成的网络,希望在空间距离上为用户就近提供服务&am…

后台系统可扩展性学习笔记(五)负载均衡

文章目录Load balancer(负载均衡器)请求传输拆解DNS 负载均衡客户端负载均衡OSI 七层模型回顾2 层、3 层负载均衡3/4 层负载均衡7 层负载均衡在 第一节谈到了系统的横向扩展在于从单机扩展到多机,那么面临的第一个问题就是这些机器如何协同工作,即如何调…

Struts2第一个工程helloStruts极其基本配置

前面已经准备好了Struts-2.3.15,现在就可以直接搭建Struts2的工程了。前面http://blog.csdn.net/huangchnegdada/article/details/9179041有对Struts-2.3.15的准备工作的详述。 首先打开MyEclispe新建一个Web Project,名字就叫Struts2_0100_Introduction…

后台系统可扩展性学习笔记(六)反向代理

文章目录Web代理服务反向代理反向代理作用Web代理服务 Web 代理服务指的是在客户端资源请求和提供这些资源的 Web 服务之间充当中介的角色,代理服务可以实现在客户端,或者从客户端到目标服务器中间的任意环节。 例如,客户端不直接向提供目标…

实验:sigsuspend(),sigprocmask()

实验:sigsuspend(),sigprocmask()源代码:/* * Program: pause_suspend.c * To test the difference between sigsuspend() and paus(). * Author: zsl * Date: 2014-10-17 * First release. * 参见网页:http://blog.csdn.net/liwentao1091/ar…

后台系统可扩展性学习笔记(七)Service Discovery与微服务

文章目录应用层微服务架构服务注册查询 Service Discovery客户端 Service DiscoveryDNS-SD DNS-based Service Discovery服务端 Service Discovery服务注册与注销自注册模式第三方注册模式总结参考应用层 在简单的 3 层结构中,Web 服务层既要处理请求,又…

很久没写代码了,这(那)几天真是累死了。。。先写一个幻方的程序吧

1 #include <stdio.h>2 #include <stdlib.h>3 #include <windows.h>4 5 #define EVEN_DOUBLE_4 4 //双偶的最基本类型&#xff0c;4阶双偶6 #define SCREEN_SIZE 19 //屏幕显示不变形的最大尺寸&#xff08;主要是因为窗口大小限制&#xff09;7 #defi…

后台系统可扩展性学习笔记(八)Service Mesh

文章目录网络传输可靠性将微服务控制下沉到网络栈&#xff1f;Sidecar从 Sidecar 到 Service MeshService Mesh 部署平台参考网络传输可靠性 从计网的学习过程中我们可以知道数据在网络传输中可能会出现一些异常状况&#xff1a; 数据丢失&#xff1a;数据包可能会到达一个缓…

关于Spring batch的学习之CSV2DB

最近在学习Spring batch相关的内容&#xff0c;网上也有不少Spring Batch相关的知识&#xff0c;不过大多都是使用xml进行配置的。这里是我用注解的方式进行相关的学习心得。 首先我们来看如何将一个文本文件中的内容导入到数据库中。 我们先来看一下我们所需要的环境。我们这里…

后台系统可扩展性学习笔记(九)Database Replication

文章目录数据库扩展一致性问题Replication &#xff08;复制&#xff09;异步复制同步复制半同步复制拓扑结构单主结构多主结构无主结构复制具体措施参考数据库扩展 之前在第一章后台系统可扩展性学习笔记&#xff08;一&#xff09;概要谈到&#xff1a;理论上&#xff0c;有…

python中的sum函数.sum(axis=1)

看起来挺简单的样子&#xff0c;但是在给sum函数中加入参数。sum&#xff08;a&#xff0c;axis0&#xff09;或者是.sum(axis1) 就有点不解了 在我实验以后发现 我们平时用的sum应该是默认的axis0 就是普通的相加 而当加入axis1以后就是将一个矩阵的每一行向量相加 例如&…

后台系统可扩展性学习笔记(十)Database Partitioning

为了提升数据库的处理能力&#xff0c;我们把单库扩展成多库&#xff0c;并通过更新同步机制&#xff08;即Replication&#xff09;来保证多份数据的一致性。然而&#xff0c;在 各种复制方案下&#xff0c;每个数据库都持有一份完整数据&#xff0c;基于全量数据提供增删改查…

基于FPGA的HDTV视频图像灰度直方图统计算法设计

随着HDTV的普及&#xff0c;以LCD-TV为主的高清数字电视逐渐进入蓬勃发展时期。与传统CRT电视不同的是&#xff0c;这些高清数字电视需要较复杂的视频处理电路来驱动&#xff0c;比如&#xff1a;模数转换&#xff08;A/D Converter&#xff09;、去隔行&#xff08;De-interla…

Java Swing 影楼管理系统之登录功能

开头打广告&#xff0c;Java1234.com。 首先&#xff0c;来个效果图。 关键代码 1&#xff0c;界面层 private void Jb_DengLuActionPerformed(java.awt.event.ActionEvent evt) {// TODO add your handling code here:String UserName this.Jb_UserNameTxt.getText();String …

Bdsyn百度手机助手是何物,它是怎样神不知鬼不觉地安装到你的电脑里的?

【电脑软件管理中Bdsyn手机助手的问题】Bdsyn手机助手 is developed by Baidu, Inc. and is used by 10 users of Software Informer. 并不是本人安装的&#xff08;应该是自己自己主动安装的&#xff09;&#xff0c;卸载以后过几天又会出如今软件列表里。百度搜索却无法搜索出…

后台系统可扩展性学习笔记(十二)NoSQL

文章目录NoSQL定义NoSQL种类键值存储文档存储宽列存储图形数据库NoSQL 意味着什么ACID vs. BASESQL or NoSQLNoSQL定义 不同于关系型数据库&#xff0c;NoSQL 数据库&#xff08;也叫非 SQL 或非关系型数据库&#xff09;提供的数据存储、检索机制并不是基于表关系建模的。没有…

后台系统可扩展性学习笔记(十三)缓存

文章目录在哪儿加缓存缓存什么内容缓存原始查库结果缓存数据对象怎么查询缓存结果预留缓存模式直读模式直写模式回写式缓存绕写式缓存提前刷新模式缓存满了如何处理参考读写分离、分库分表、反范式化、采用 NoSQL……如果这些扩展手段全都上了&#xff0c;数据响应依旧越来越慢…

后台系统可扩展性学习笔记(十四)异步机制与MQ

对于 Web 服务而言&#xff0c;提升可扩展性的主要途径是将耗时的同步工作改成异步处理&#xff0c;从而允许将这些工作“外包”给多个 Worker 去做&#xff0c;或者提前完成能够预知的部分。 异步机制与可扩展性之间的关系需要从&#xff08;异步&#xff09;并行处理的优势说…

光标闪烁问题的解决办法

在调用Windows API函数SetCursor设置光标时&#xff0c;可能会碰到闪烁的问题&#xff1a;移动鼠标&#xff0c;光标在Class Cursor(即注册窗口类时指定的Cursor)与预设Cursor之间闪烁。 在MSDN上有关SetCursor函数的备注中强调&#xff0c;如果Class Cursor非空&#xff0c;那…

视频编解码基础

文章目录前戏编解码技术流程主流视频编码标准视频传输面临的问题视频传输差错控制视频传输Qos质量保证参数人类视觉系统HVS 以及相应编码措施正餐编码层次与码流结构PB帧编码IBBP序列编码结构图像编码结构条带编码结构宏块编码结构块编码结构预测技术码率控制实例H264前戏 编解…