httpDNS解析过程

httpDNS是基于http协议DNS服务器发送域名解析请求,替代了基于DNS协议向运营商LocalDNS发起解析请求的传统方式,可以避免LocalDNS造成域名劫持和跨网访问问题,解决移动互联网服务中域名解析异常带来的困扰。

服务IP:

考虑到服务IP防攻击之类的安全风险,为保障服务可用性,HTTPDNS同时提供多个服务IP,当某个服务IP在异常情况下不可用时,可以使用其它服务IP进行重试。

API响应说明

请求成功:

请求成功时,HTTP响应状态为200,响应结果用JSON表示,示例如下:

{
"host": "www.dns.com",
"data": [
 "1.1.1.1"
 ],
 }

返回字段说明:

名称 描述
host 请求解析的域名
data 该域名的解析结果,是一个列表,可能包含0个,1个或多个IP地址

data可能为空,原因:
1、 该域名没有购买相应的dns防御服务,请前往购买。
2、 该域名不存在对应IP,域名未注册,或没有配置IP地址。

data字段为空的返回结果示例:

{
"host": "www.dns.com",
 "data": [],
 }
请求失败:

请求失败时,HTTP响应的状态码为1、2、3,同时也返回具体的错误码,响应结果用JSON格式表示。

请求失败的响应示例:

HTTP状态码 描述
1 格式错误,timestamp错误 或者 sign 32位 或者 host错误
2 超时 timestamp超时
3 签名错误

错误处理说明

用户业务使用HTTPDNS时,应做好异常情况下的出错兼容逻辑,主要包括异步请求、重试和降级。

异步请求:

访问HTTPDNS服务时,应该使用异步请求的策略,避免解析延迟太大而对业务造成影响,特别是在网络环境异常或HTTPDNS服务IP异常不可用时,如果用同步访问,需要等待网络超时后才会返回解析失败,这个超时时间较大,可能对业务的使用体验造成很大影响。

异步请求策略:解析域名时,如果当前缓存中有TTL未过期的IP,可直接使用;如果没有,则立刻让此次请求降级走原生LocalDNS解析,同时另起线程异步地发起HTTPDNS请求进行解析,更新缓存,这样后续解析域名时就能命中缓存。

重试:

访问HTTPDNS服务解析域名时,如果请求HTTPDNS服务端失败,即HTTP请求没有返回,可以进行重试。

大部分情况下,这种访问失败是由于网络原因引起的,重试可以解决。

降级:

不管是因为什么原因,当通过HTTPDNS服务无法获得域名对应的IP时,都必须降级:使用标准的DNS解析,通过Local DNS去解析域名。

如上所述,请求HTTPDNS但没有返回IP时,主要是因为“域名没有在控制台添加”或“域名本身不存在”,无论如何,如果通过HTTPDNS没有解析出IP,为保证业务请求正常,必须“降级”使用标准的DNS,作为一种兜底的方案。

你可能感兴趣的:(Linux/Unix,后端,HTTPDNS,网络,https)