客户端自己的DNS-HttpDNS

一、为什么要有Http DNS

  1. 解决传统DNS缓存导致的更新不及时问题和缓存导致的负载均衡失效问题
  2. 域名被小的服务商转发,无法确定真实的服务商导致的GSLB失效问题
  3. 出口NAT网络地址转换导致网络运营商不准确,DNS配置的GSLB失效问题
  4. 域名更新时在全网生效的周期会很漫长,在某些对DNS切换生效时间要求高的时候,传统DNS无法满足要求。例如容灾双机房切换
  5. DNS需要递归遍历多个DNS服务器,会带来一定时延,甚至会解析超时。

二、什么是Http DNS

虽然DNS存在一些问题,但是也不可能退回到IP访问,所以就有了Http DNS来解决上述的一系列问题。
除了在第一部分中的问题外,使用HTTPDNS还能防治DNS劫持攻击,因为直接返回指定的解析结果,而不经过三方的DNS服务器获取解析结果。

  1. HttpDNS 其实就是不走传统的 DNS 解析,而是自己搭建基于 HTTP 协议的 DNS 服务器集群,分布在多个地点和多个运营商。当客户端需要 DNS 解析的时候,直接通过 HTTP 协议进行请求这个服务器集群,得到就近的地址。但是默认的域名解析都是走 DNS 的,因而使用 HttpDNS 需要绕过默认的 DNS 路径,就不能使用默认的客户端。
  2. 使用 HttpDNS 的,往往是手机应用,需要在手机端嵌入支持 HttpDNS 的客户端 SDK。阿里云的HttpDNS支持WEB端SDK、Android、和IOS端SDK

三、Http DNS的工作模式

客户端自己的DNS-HttpDNS_第1张图片

  1. HttpDNS客户端SDK,先请求HttpDNS服务的服务期地址,获取HttpDNS服务器的ip列表。
  2. 手机应用访问某个地址,首先查看HttpDNS客户端SDK是否有本地的缓存,如果有缓存就直接返回。这个缓存并非系统的DNS缓存,而是HttpDNS的SDK自己控制的,如何更新和何时更新完全可以由自己的服务端协调客户端来做这件事。
  3. 如果没有缓存,那么从步骤1的IP中选择一个发出HTTP请求,请求内容包含需要访问的域名,响应则包含域名对应的IP地址。客户端能判断手机的运营商和位置,可以做精准的全局负载均衡。
  4. 如果HTTPDNS解析服务异常了,还可以通过传统的LocalDNS来访问。慢也比访问不到好!

HttpDNS的缓存更新
客户端自己的DNS-HttpDNS_第2张图片

你可能感兴趣的:(#,计算机网络,网络,httpdns,dns)