本文为您介绍云解析DNS的一些基础概念,帮助您提前掌握一些基础知识,更好的理解和使用产品功能。
DNS
DNS(Domain Name System,域名系统)即“域名系统”。DNS是整个互联网服务的基础系统之一,同时也是企业内网服务的重要基础服务系统之一,负责将人们访问的互联网域名和企业内网域名转换为IP地址,这一转换的过程叫做“域名解析”, 所以DNS又称“域名解析系统”,相当于网络访问的指路牌。DNS作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问网络资源和网络服务,而不用去记住能够被机器直接读取的IP数串。DNS协议运行在UDP协议之上,使用端口号53。DNS从服务的网络环境来区分,分为公网DNS和内网DNS。DNS从解析链路扮演的功能角色来区分,分为权威DNS和递归 DNS。
域名的分层结构
域名采用层次树状结构命名,每个连接在互联网上的主机或路由器,都有唯一的层次结构名字。域名由标号(label)序列组成,各标号之间用点(小数点)隔开。关于域名层次结构如下图:
举例说明
.com
是顶级域名;aliyun.com
是主域名,也叫二级域名;example.aliyun.com
、www.aliyun.com
是子域名,也叫三级域名;test.example.aliyun.com
是子域名的子域,也叫四级域名。
DNS服务器层级
DNS解析过程涉及4个层级的DNS服务器,分别如下:
服务器类型 | 作用 |
根域名服务器 | 英文全称:Root Name Server,简称Root Server。本地域名服务器在本地查询不到解析结果时,则第一步会向它进行查询,并获取顶级域名服务器的IP地址。 |
顶级域名服务器 | 英文全称:Top-Level Domain Name Server,简称:TLD Server。负责管理在该顶级域名服务器下注册的主域名,例如“example.com”,.com则是顶级域名服务器,在向它查询时,可以返回主域名“example.com”所在的权威域名服务器地址。 |
权威域名服务器 | 英文全称:Authoritative Name Server,简称NS。在特定区域内具有唯一性,负责维护该区域内的域名与IP地址之间的对应关系。例如云解析DNS的公网权威解析,您可在此添加解析记录,最终它会将配置的ip记录返回给用户。 |
本地域名服务器 | 英文全称:Local DNS Server,简称Local DNS。本地域名服务器是响应来自客户端的递归请求,并最终跟踪直到获取到解析结果的DNS服务器。例如用户本机自动分配的DNS、运营商ISP分配的DNS、谷歌/223.5.5.5公共DNS等。 |
每个层级的域名都有其专属的域名服务器,最顶层是根域名服务器。每一层的域名服务器都存储着下级域名服务器的IP地址,从而能够逐级进行查询。
DNS解析过程
通过域名example.com
访问网站的域名解析过程如下。
用户在Web浏览器中输入
example.com
, 向本地域名服务器发起查询请求。若本地域名服务器存在缓存的解析数据,则直接将域名example.com
对应的IP地址返回给Web浏览器,跳至步骤9。若本地域名服务器没有查到缓存的解析数据,则继续步骤2。本地域名服务器向根域名服务器进行查询。
根域名服务器将
.com
顶级域名服务器的地址,返回给本地域名服务器。本地域名服务器向
.com
顶级域名服务器发起example.com
的查询请求。.com顶级域名服务器将为
example.com
提供权威解析的权威域名服务器地址,返回给本地域名服务器。本地域名服务器向权威域名服务器发起查询请求。
权威域名服务器将域名
example.com
对应的IP地址,返回给本地域名服务器。本地域名服务器最后把查询的IP地址响应给Web浏览器。
Web浏览器通过IP地址访问网站服务器。
网站服务器返回网页信息。
递归解析(Recursive Query)
DNS服务器帮你把整个查询流程走到底,中间任何一步都由这台服务器去处理,最后直接把最终结果返回给你。如:
客户端将“请帮我查出www.example.com的IP”递交给本地DNS(递归服务器)。
递归服务器自己如果不知道答案,会去根DNS、TLD、权威DNS不断发问,并跟进每一步;直到获得最终答案。
用户只需要等递归服务器给出最后的解析结果即可。
特点
用户只需问一次、等一次。
递归服务器压力较大,需要走完整查询流程。
这是客户端和本地DNS之间最常见的方式。
常见应用
普通用户/PC/浏览器 :只有递归查询,不处理迭代查询。
本地DNS服务器(如你的宽带运营商、公网8.8.8.8、公司内网DNS):通常承担递归解析的角色,对外(向根、TLD、权威DNS)发起迭代查询。
公共DNS服务器:对用户递归,对更上级DNS迭代。
迭代解析(Iterative Query)
DNS服务器只帮你查“它知道的下一步线索”,如果自己没有答案就告诉你下一步去哪问,用户必须自己去完成整个查询流程。如:
客户端问本地DNS:“www.example.com的IP是多少?”
本地DNS不知道,查问根DNS。根DNS不直接回答IP,而是答:“你去问TLD服务器”,这里的根DNS则在进行迭代解析。
本地DNS问TLD服务器,TLD告诉你“去找这个权威DNS”,这里的TLD服务器则在做迭代解析。
直到找到权威服务器,获取最终结果。
特点
每一步都需要客户端自己去问。
服务器压力较小,但客户端负担大(通常不这样用)。
常见应用
根DNS服务器、TLD服务器、权威DNS服务器。
企业、学校等自建的DNS服务器。
公共DNS服务器:对用户递归,对更上级DNS迭代。
DNS缓存
DNS缓存是将解析数据存储在靠近发起请求的客户端的位置,也可以说DNS数据是可以缓存在任意位置,最终目的是以此减少递归查询过程,可以更快的让用户获得请求结果。
TTL
英文全称Time To Live ,这个值是告诉本地域名服务器,域名解析结果可缓存的最长时间,缓存时间到期后本地域名服务器则会删除该解析记录的数据,删除之后,如有用户请求域名,则会重新进行递归查询/迭代查询的过程。
IPV4、IPV6双栈技术
双栈英文Dual IP Stack,就是在一个系统中可同时使用IPv6/ IPv4这两个可以并行工作的协议栈。
DNS Query Flood Attack
指域名查询攻击,攻击方法是通过操纵大量傀儡机器,发送海量的域名查询请求,当每秒域名查询请求次数超过DNS服务器可承载的能力时,则会造成解析域名超时从而直接影响业务的可用性。
URL转发
英文 Url Forwarding,也可称地址转向,它是通过服务器的特殊设置,将一个域名指向到另外一个已存在的站点。
edns-client-subnet
google提交了一份DNS扩展协议,允许DNS resolver传递用户的IP地址给authoritative DNS server。
DNSSEC
域名系统安全扩展(DNS Security Extensions),简称DNSSEC。它是通过数字签名来保证DNS应答报文的真实性和完整性,可有效防止DNS欺骗和缓存污染等攻击,能够保护用户不被重定向到非预期地址,从而提高用户对互联网的信任。
移动解析HTTPDNS相关概念
应用终端
指专门用于网络接入的终端设备和应用服务,包括并不限于移动终端、物联网终端、APP应用等。
DoH(DNS-over-Https)
用来加密的DNS请求流量,阿里云公共DNS通过RFC 8484指定的经过TLS加密的HTTP连接提供DNS解析。
DoT(DNS-over-TLS)
用来加密的DNS请求流量,阿里云公共DNS通过RFC 7858指定的经过TLS加密的TCP连接提供DNS解析。