作者:林子
对于互联网,域名解析是访问的第一步,而这一步很多时候会导致访问速度慢、失败,甚至无法访问等,那么怎么解决这些问题呢?本文将带你快速入门 HTTPDNS,怎么解决 LocalDNS 异常导致用户访问您的业务出现异常的情况。
在讲解 HTTPDNS 之前,从 HTTPDNS 名词可以看出它跟 DNS 有必然的联系,所以,我们先来介绍一下 DNS。
DNS(Domain Name System,域名系统)是互联网的一项服务。它是域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS 使用 UDP 端口53,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
举例来说,当一台设备要访问网络上另外一台设备时,必须首先获知其地址,而这个地址是 TCP/IP 中的 IP 地址,是由四段以“.”分开的数字组成(以 IPv4 的地址为例),但是由于 IP 地址难以记忆,用户难以记忆,因此采用了域名系统来管理名字和 IP 的对应关系。
所以,域名只是一个方便记忆的名字,实际上对网络资源的访问还是得通过IP地址去访问,DNS 解析的作用就是将域名解析成 IP 地址。
既然域名是方便用户来访问网络上的资源的,那么好记、有代表性的域名就肯定是大家都想要使用的域名,如何在庞大的网络资源中分配域名和进行解析呢?
域名由 ICANN(Internet Corporation for Assigned Names and Numbers,因特网域名与地址管理机构)管理,它负责域名系统管理、IP地址分配、协议参数配置,以及主服务器系统管理等职能而设立的非盈利机构。
ICANN 为不同的国家或地区设置了相应的顶级域名,这些域名通常都由两个英文字母组成。例如:.uk
代表英国、.fr
代表法国、.jp
代表日本。中国的顶级域名是.cn
,而 .cn
下的域名由CNNIC(China Internet Network Information Center,中国互联网络信息中心) 进行管理。
除了代表各个国家顶级域名之外,ICANN 最初还定义了7个顶级类别域名,它们分别是 .com
、.top
、 .edu
、.gov
、.mil
、 .net
、 .org
。
随着因特网的发展,ICANN 又增加了两大类共7个顶级类别域名。,分别是.aero、.biz、coop、.info、.museum、.name、.pro。其中,.aero、.coop、.museum 是3个面向特定行业或群体的顶级域名,.biz、.info、.name、.pro是4个面向通用的顶级域名。
然而,现在的商业公司一般都会默认会使用 .com
作为官网。同时,避免被恶意注册,通常也会注册其它的顶级类别域名。
域名由一个或多个部分组成,从右往左依次是顶级域名,二级域名,三级域名……,不一定有这么多级域名,但是也可能出现四级等,通常,子域是从属于其父域的域。如sos.state.oh.us
DNS 详细解析过程:
1) 终端设备发起查询域名的 IP 地址的 DNS 请求。
2) 请求先经过本地的解析器。本地解析器首先查询它的缓存记录,如果缓存中有此条记录,就可以直接返回结果。如果没有,本地解析器向本地DNS服务器(Local DNS Server)进行查询。
3) 本地 DNS 服务器首先查询它的缓存记录,如果缓存中有此条记录,就可以直接返回结果。如果没有,本地 DNS 服务器向根域名服务器进行查询。
4) 根服务器经过查询,会返回可以解析该域名的顶级域名服务器IP地址。
5) 本地 DNS 服务器向 返回的顶级域名服务器发送 DNS 请求。
6) 顶级域名服务器收到请求后,不会直接返回域名和 IP 地址的对应关系,而是返回可以解析该域名的权威域名服务器地址
7) 本地 DNS 服务器向权威域名服务器发送 DNS 请求,请求域名的 IP 地址。
8) 权威域名服务器收到请求后,在自己的缓存表中发现了该域名和 IP 地址的对应关系,并将 IP 地址返回给本地 DNS 服务器。
9) 本地 DNS 服务器将获取到与域名对应的 IP 地址返回给本地解析器,并且将域名和 IP 地址的对应关系保存在缓存中,以备下次别的用户查询时使用。
10) 本地 DNS 解析器将获取到与域名对应的 IP 地址返回给终端设备,并且将域名和 IP 地址的对应关系保存在缓存中,以备下次查询时使用。
从 DNS 解析过程,我们知道 DNS 的不足:
怎么解决 DNS 以上的缺点呢?HTTPDNS 就是解决这些问题的一种方案。
默认情况下的网络请求,系统会通过 DNS 服务器将域名解析成 IP 地址,然后通过这个 IP 地址发送请求。这个 DNS 解析的过程对于 App 来说是黑盒子,通常不用开发者关注,但正因如此导致这个黑盒子的 DNS 系统存在了非常多的缺点。怎么解决这些问题?是否可以不用这个系统,或者把这个 DNS 系统做的更加智能化呢?
简而言之,HTTPDNS 就是使用 HTTP 协议向 DNS 服务器进行请求,从而获取 IP 地址,简化了请求的复杂性。在请求 DNS 服务器的时候,使用 IP 直接访问。跳过使用系统解析的过程,自己来做 DNS 解析系统。
HTTPDNS 的优点:
HTTPDNS 的适用场景:
主要应用在以下几类移动 App 开发中:
HTTPDNS 基于 HTTP 协议向自己的 DNS 服务器发送域名解析请求,替代基于 DNS 协议向运营商 Local DNS 发起解析请求的传统方式,可以避免 Local DNS 造成的域名劫持和跨网访问问题,解决移动互联网服务中域名解析异常带来的困扰。
当然,HTTPDNS 看似很简单,如果要自己实现一个 HTTPDNS 服务器,还是需要考虑很多东西。完善的架构如下图:
图片来源:腾讯云HTTPDNS
HTTPDNS 的出现无法考查,但从鹅厂文章 全局精确流量调度新思路-HttpDNS服务详解 可以看到 QQ 当年也临时同样的 DNS 干扰问题。对于大多数开发者来说,自己实现 HTTPDNS 未尝不可
从原理上来讲,HTTPDNS 只是将域名解析的协议由 DNS 协议换成了 HTTP 协议,并不复杂。但是这一微小的转换,却带来了巨大的收益,其中 DNS 劫持(域名劫持)就是最为严重的一个问题,通过某些方式篡改了用户正常访问的 web 网页,插入广告或者其他内容,在页游时代就经常发生。而移动 App 主要导致无法访问、成功率下降等问题。同时,在今天移动互联网高度成熟环境下,用户体验越发重要,智能解析,就近接入,提升连接成功率,快速响应,确保用户访问顺畅,这些都是 HTTPDNS 的优势。移动互联网的下半场,是对用户体验的极致追求,也是对技术的融合创新的极致追求!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。