DNS(Domain Name System,域名系统)是一个分布式数据库,用于将域名与IP地址相互映射。
例如,若您的网站服务器IP为 203.0.113.1,可将您的域名如 www.example.com 并配置DNS记录指向该IP。用户访问 www.example.com 时,DNS系统会自动解析出IP地址,无需记忆复杂数字。
域名的分层结构
域名采用层次树状结构命名,每个连接在互联网上的主机或路由器,都有唯一的层次结构名字。域名由标号(label)序列组成,各标号之间用点(小数点)隔开。关于域名层次结构如下图:
举例:
“.com”是顶级域名;
“aliyun.com”是主域名,主要指企业名;
“example.aliyun.com”是子域名;
“www.example.aliyun.com”是子域名的子域。
DNS解析系统
DNS服务器层级
DNS解析过程涉及4个层级的DNS服务器,分别如下:
服务器类型 | 作用 |
根域名服务器 | 英文全称:Root Name Server,简称Root Server。本地域名服务器在本地查询不到解析结果时,则第一步会向它进行查询,并获取顶级域名服务器的IP地址。 |
顶级域名服务器 | 英文全称:Top-Level Domain Name Server,简称:TLD Server。负责管理在该顶级域名服务器下注册的二级域名,例如“www.example.com”,.com则是顶级域名服务器,在向它查询时,可以返回一级域名“example.com”所在的权威域名服务器地址。 |
权威域名服务器 | 英文全称:Authoritative Name Server,简称NS。在特定区域内具有唯一性,负责维护该区域内的域名与IP地址之间的对应关系,例如云解析DNS。 |
本地域名服务器 | 英文全称:Local DNS Server,简称Local DNS。本地域名服务器是响应来自客户端的递归请求,并最终跟踪直到获取到解析结果的DNS服务器。例如用户本机自动分配的DNS、运营商ISP分配的DNS、谷歌/114公共DNS等。 |
注释:
每个层级的域名都有其专属的域名服务器,最顶层是根域名服务器。每一层的域名服务器都存储着下级域名服务器的IP地址,从而能够逐级进行查询。
DNS解析过程
通过域名example.com访问网站的域名解析过程如下。
1、用户在Web浏览器中输入“example.com”, 向本地域名服务器发起查询请求。若本地域名服务器存在缓存的解析数据,则直接将域名example.com对应的IP地址返回给Web浏览器,跳至步骤9。若本地域名服务器没有查到缓存的解析数据,则继续步骤2。
2、本地域名服务器向根域名服务器进行查询。
3、根域名服务器将.com顶级域名服务器的地址,返回给本地域名服务器。
4、本地域名服务器向.com顶级域名服务器发起example.com的查询请求。
5、.com顶级域名服务器将为example.com提供权威解析的权威域名服务器地址,返回给本地域名服务器。
6、本地域名服务器向权威域名服务器发起查询请求。
7、权威域名服务器将域名example.com对应的IP地址,返回给本地域名服务器。
8、本地域名服务器最后把查询的IP地址响应给Web浏览器。
9、Web浏览器通过IP地址访问网站服务器。
10、网站服务器返回网页信息。
公网权威解析
在DNS解析过程中,权威域名服务器负责最终返回域名(如 example.com)对应的真实IP地址。公网权威解析(如阿里云云解析DNS)是在全球范围内部署的权威DNS服务器,为用户的域名提供权威、可靠的解析服务。
系统架构
管控层:位于中国内地的华北3(张家口)和华东1(杭州),通过控制台和OpenAPI提供服务。实现了域名解析数据、配置数据、日志数据等的增删改查和存储功能。
解析层:全球部署的解析服务器集群,接收管控层分发的域名解析记录数据。实现了对域名解析记录数据的查询请求进行应答的功能。节点覆盖全球主要大洲和地区。
核心优势
更稳定:全球DNS集群互相备份,提供100%SLA解析服务保障,全网数据一致性保障。
更安全:全球10T+带宽储备,多个大型流量清洗中心,支持每秒过亿次的DNS查询攻击防护。
更快速:全球节点覆盖,支持用户就近接入,解析速度更快、延迟更低。
说明全球节点:美国(弗吉尼亚)、美国(硅谷)、墨西哥、印度尼西亚(雅加达)、马来西亚(吉隆坡)、新加坡、日本(东京)、沙特(利雅得)、阿联酋(迪拜)、德国(法兰克福)、英国(伦敦)、泰国(曼谷)、韩国(首尔)、菲律宾(马尼拉)、中国香港、华北2(北京)、华东2(上海)、华南1(深圳)、华东1(杭州)、西南1(成都)、华北1(青岛)、大连、西安、天津、太原、郑州、华中1(武汉-本地地域)、华东5 (南京-本地地域)。
集群会根据阿里云基础设施建设进行调整,不作为服务SLA承诺。
高性能:1秒内可将上千次域名变更数据下发到全球服务节点,每日为用户处理DNS查询请求远超1000亿次。
DNS术语
递归查询
是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果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欺骗和缓存污染等攻击,能够保护用户不被重定向到非预期地址,从而提高用户对互联网的信任。