码迷,mamicode.com
首页 > Web开发 > 详细

HttpDNS是什么?

时间:2019-10-08 01:01:17      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:基于   要求   简介   交互   文件   fqdn   服务器端   节点   避免   

技术图片

HttpDNS服务是一款可以有效解决域名劫持的解决方案,并且已经在各大互联网行业得到广泛的应用,现已成为一款相当成熟的产品!!!

DNS的简介DNS的全称是Domain Name System,它的目的就是将一个域名解析到一个IP。基础的DNS会用到TCP/UDP协议的53号端口,默认的是UDP协议,如果对服务质量要求比较高的话建议使用TCP。

Why We Need DNS?
在TCP的IP协议中约定,主机之间通信必须通过IP。但是IP地址难以记忆,所以一般都是通过域名来访问网站。且由于程序在对域名进行调用的时候不能去写死IP,所以要使用FQDN的方式。

DNS 解析过程
技术图片

  1. 浏览器中输入 www.example.com,发出解析请求

  2. 本机的域名解析器 resolver 程序查询本地缓存和 host 文件中是否为域名的映射关系,如果有则调用这个 IP 地址映射,完成解析。

  3. 如果 hosts 与本地解析器缓存都没有相应的网址映射关系,则本地解析器会向 TCP/IP 参数中设置的首选 DNS 服务器(我们叫它 Local DNS 服务器)发起一个递归的查询请求。

  4. 服务器收到查询时,如果要查询的域名由本机负责解析,则返回解析结果给客户机,完成域名解析,此解析具有权威性。如果要查询的域名,不由 Local DNS 服务器解析,但该服务器已缓存了此网址映射关系,则调用这个 IP 地址映射,完成域名解析,此解析不具有权威性。

  5. 如果 Local DNS 服务器本地区域文件与缓存解析都失效,则根据 Local DNS 服务器的设置(是否递归)进行查询,如果未用开启模式,Local DNS 就把请求发至13台 Root DNS。如果用的是递归模式,此 DNS 服务器就会把请求转发至上一级 DNS 服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根 DNS 或把转请求转至上上级,以此循环。

  6. Root DNS 服务器收到请求后会判断这个域名是谁来授权管理,并会返回一个负责该顶级域名服务器的一个 IP。

  7. Local DNS 服务器收到 IP 信息后,将会联系负责 .com 域的这台服务器。

  8. 负责 .com 域的服务器收到请求后,如果自己无法解析,它就会找一个管理 .com 域的下一级 DNS 服务器地址给本地 DNS 服务器。

  9. 当 Local DNS 服务器收到这个地址后,就会找 example.com 域服务器,10、11重复上面的动作,进行查询。

  10. 最后 www.example.com 返回需要解析的域名的 IP 地址给 Local DNS 服务器。

  11. Local DNS 服务器缓存这个解析结果(同时也会缓存,6、8、10返回的结果)。

  12. Local DNS 服务器同时将结果返回给本机域名解析器。

  13. 本机缓存解析结果。

  14. 本机解析器将结果返回给浏览器。

  15. 浏览器通过返回的 IP 地址发起请求。
    HttpDns 是什么
    HTTPDNS 利用 HTTP 协议与 DNS 服务器交互,代替了传统的基于 UDP 协议的 DNS 交互,绕开了运营商的 Local DNS,有效防止了域名劫持,提高域名解析效率。另外,由于 DNS 服务器端获取的是真实客户端 IP 而非 Local DNS 的 IP,能够精确定位客户端地理位置、运营商信息,从而有效改进调度精确性。

HttpDns 主要解决的问题
Local DNS 劫持:由于 HttpDns 是通过 IP 直接请求 HTTP 获取服务器 A 记录地址,不存在向本地运营商询问 domain 解析过程,所以从根本避免了劫持问题。

平均访问延迟下降:由于是 IP 直接访问省掉了一次 domain 解析过程,通过智能算法排序后找到最快节点进行访问。

用户连接失败率下降:通过算法降低以往失败率过高的服务器排序,通过时间近期访问过的数据提高服务器排序,通过历史访问成功记录提高服务器排序。

如何进行改造支持 HttpDns
目前,国内有一部分厂商已经提供了这个解析服务,可以直接使用第三方服务。目前,提供 HttpDns 解析服务的有:阿里云HttpDNS

阿里云的 HttpDNS 服务的 API 比较标准,直接发一个 Get 请求,带上请求参数,返回结果以 json 返回。

1
http://203.107.1.1/d?host=www.example.com
请求成功时,返回结果如下:

{
"host": "www.example.com",
"ips": [
"115.238.23.241",
"115.238.23.251"
],
"ttl": 57
}
在移动端,将由 HttpDns 获得的 IP 地址在原有 URL 的基础上,将域名替换为 IP,然后用新的 URL 发起 HTTP 请求。

原文:大专栏  HttpDNS是什么?


HttpDNS是什么?

标签:基于   要求   简介   交互   文件   fqdn   服务器端   节点   避免   

原文地址:https://www.cnblogs.com/sanxiandoupi/p/11633173.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!