文章为“一文读懂域名与网站系列”第二篇,上篇文章主要介绍了域名的注册、建站和管理,通过本文你可以了解以下几个问题:
- 域名的结构、常用解析记录的类型
- DNS 解析的过程
- DNS 解析拓展知识
众所周知,互联网中的地址其实是 IP 地址,有 IPV4 和 IPV6 两种类型,但是难以记忆,因此发明了有特殊含义的域名来让用户使用。用户输入的是域名,但是网络通信使用的却是 IP 地址,将域名解析为 IP 地址就是通过 DNS 解析实现的。目前火山引擎域名服务新用户活动正在进行中,新用户最低一元即可注册新域名或转入续费老域名。
域名的构成
下图为域名的结构。其实每个域名都是有根域的,如 www.volcengine.com 其实应该是 www.volcengine.com. ,域名末尾的点就是根域名,很多情况下根域名是可以省略掉的。在上述例子中,com 为顶级域名,volcengine.com 是二级域名或主域名,www.volcengine.com 是子域名或分域名。值得注意的是,顶级域名不一定只由一个域名构成,也可以由两个域名构成。虽然.com、.cn 都是顶级域名,但是.com.cn 也是顶级域名。
解析记录的类型
DNS 解析是将域名解析为 IP 地址的过程,那域名和 IP 地址的映射关系存在哪里呢?答案是 DNS 权威服务器。用户通过在 DNS 管理平台添加域名的解析记录,管理平台将该记录同步到权威 DNS 服务器,实现域名与最终 IP 地址的绑定。
值得注意的是,用户为域名添加的解析记录值除了 IP 地址外还可以是其他类型。DNS 记录有很多种,下图是 TrafficRoute 云解析 DNS 支持的部分记录类型,了解更多记录类型可以参看 https://www.volcengine.com/docs/6758/145121
这是一个很经典的 DNS 解析流程图。
DNS 解析流程
DNS 解析的过程可以分为本地查询(1、2)与线上查询(3-11)。
本地查询
本地查询可以分为 host 文件查询与本地缓存查询。当用户在浏览器中访问域名时,会先进行本地查询,若本地查询命中,则直接返回;未命中,则需要访问线上的 DNS 服务器进行解析。
线上查询
线上 DNS 解析主要包含:Local DNS 服务器、根域 DNS 服务器、顶级域 DNS 服务器、权威域 DNS 服务器。Local DNS 服务器不在客户端本地,一般为运营商提供的线上 DNS 服务器;权威 DNS 是特定域名记录在域名注册商处所设置的 DNS 服务器,用于特定域名本身的管理。
线上查询主要分为递归查询和迭代查询:递归查询是浏览器把任务交给 Local DNS ,然后等待 Local DNS 返回结果;迭代查询是 Local DNS 分别向各级 DNS 服务器发送查询请求,直到获取 DNS 解析结果为止。
总的来说,客户端向 Local DNS 服务器进行查询,如果命中 Local DNS 服务器的缓存,直接返回 IP;没有命中,Local DNS 服务器会向各级域名服务器进行查询,直到最终解析出 IP 为止。
实例分析
dig gtm-test.wenteng.site
以 gtm-test.wenteng.site 这个域名为例,我们分析一下这个域名解析为 IP 的过程。首先 dig 一下这个域名会得到以下结果。
从上图我们可以看到,gtm-test.wenteng.site 的 DNS 解析过程中其实还包含一次 CNAME 域名的解析(gtm-test.wenteng.site.gtm.volcdns.com)。这是因为该域名接入了云调度 GTM,你可以理解为我是在 GTM 平台配置了 test.wenteng.site.gtm.volcdns.com 与 IP(76.76.21.61 等)的映射,之后又在云解析 DNS 平台为二级域名 wenteng.site 添加了一条主机记录为 gtm-test,记录值为 test.wenteng.site.gtm.volcdns.com 的解析记录。
-
当中国内地用户在浏览器输入访问 gtm-test.wenteng.site 时,本地缓存未命中,会去查询 Local DNS 服务器;
-
若 Local DNS 服务器中没有该域名的缓存记录,则会依次去查询根域 DNS 服务器、顶级域 DNS 服务器、权威 DNS 服务器;
-
根域 DNS 服务器会告知.com 顶级域对应的顶级域解析服务器地址;
-
之后顶级域服务器会告知 wenteng.site 二级域名对应的权威 DNS 服务器地址;
-
最终从权威域名服务器中查询到 gtm-test.wenteng.site 这个域名对应的记录值;
-
查询到的记录类型为 CNAME 类型,非 IP,之后会对这个结果进行又一次的 5-10 过程解析,最终返回 A 类型的 IP 76.76.21.61、76.76.21.22。
实际情况中,因为 Local DNS 服务器有缓存,每一次的查询过程不是一定都要走根域名这个过程的,不然根域 DNS 服务器的流量就太大了。
普通解析的升级
智能解析
传统 DNS 解析,不判断访问者来源,而智能 DNS 解析,会判断访问者的来源,为不同的访问者智能返回不同的 IP 地址,可使访问者在访问网站时可获取用户指定的就近 IP 地址,能够减少解析时延,并提升网站访问速度的功效。
如果您的业务分布在多个地区的多个 IDC 机房且各机房有独立的 IP 地址,您希望用户根据其所在地区和运营商,接入就近机房,这种场景可以使用智能解析。
上图为云解析 DNS 平台 wenteng.site 的解析记录截图,很明显可以看到每个记录都有线路属性。线路是一个二级结构,地区+运营商,DNS 就是根据用户的线路配置和实际请求的来源位置来实现智能解析的。同样是访问 intelligent.wenteng.site 这个域名
-
中国内地 ISP 为电信的用户实际访问到的服务 IP 为 3.3.3.3(默认线路);
-
中国内地 ISP 为移动的用户实际访问到的服务 IP 为 4.4.4.4(中国移动);
-
中国内地联通的用户实际访问到的服务 IP 为 1.1.1.1;
-
国外用户实际访问到的服务 IP 为 2.2.2.2。
如果你不需要开启智能解析,则直接将所有线路设为默认即可。值得注意的是,当开启智能解析时,默认线路是必须的,不然地区+运营商匹配不到的情况会导致空解析。此外,如果 3.3.3.3 是国外的 IP,中国内地电信用户访问到的服务就是国外的服务,这个可能不符合预期。因此要实现真正的就近接入,解析记录代表的服务器和线路最好是匹配的,不然有可能适得其反。
私网 DNS
PrivateZone,是基于专有网络 VPC(Virtual Private Cloud)环境的私有 DNS 服务。该服务允许您在自定义的一个或多个 VPC 中将私有域名映射到 IP 地址。通过 PrivateZone,您可以方便地使用私有域名记录来管理 VPC 中的 TOS ECS 等资源,而这些私有域名在 VPC 之外将无法访问。
HTTPDNS
DNS 存在一些缺点:如 DNS 更新不及时、DNS 劫持问题、流量调度不均衡等。正因为传统 DNS 存在上述问题,因此 HTTPDNS 应运而生。客户端使用 HTTP 协议或 HTTPS 协议发送请求到 HTTPDNS 服务端,从而绕过运营商的 Local DNS,防止域名劫持、实现精准调度。
DNS 负载均衡
DNS 负载均衡的本质是多次解析同一个域名可以返回不同的 IP 地址。最简单的实现 DNS 负载均衡的方式就是在 DNS 解析配置平台为一个域名配置多个 IP 并开启负载均衡,实现多次请求的流量打到多个 IP 的目的。