HttpDNS是什么?
Posted sanxiandoupi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HttpDNS是什么?相关的知识,希望对你有一定的参考价值。
HttpDNS服务是一款可以有效解决域名劫持的解决方案,并且已经在各大互联网行业得到广泛的应用,现已成为一款相当成熟的产品!!!
DNS的简介DNS的全称是Domain Name System,它的目的就是将一个域名解析到一个IP。基础的DNS会用到TCP/UDP协议的53号端口,默认的是UDP协议,如果对服务质量要求比较高的话建议使用TCP。
Why We Need DNS?
在TCP的IP协议中约定,主机之间通信必须通过IP。但是IP地址难以记忆,所以一般都是通过域名来访问网站。且由于程序在对域名进行调用的时候不能去写死IP,所以要使用FQDN的方式。
DNS 解析过程
-
浏览器中输入 www.example.com,发出解析请求
-
本机的域名解析器 resolver 程序查询本地缓存和 host 文件中是否为域名的映射关系,如果有则调用这个 IP 地址映射,完成解析。
-
如果 hosts 与本地解析器缓存都没有相应的网址映射关系,则本地解析器会向 TCP/IP 参数中设置的首选 DNS 服务器(我们叫它 Local DNS 服务器)发起一个递归的查询请求。
-
服务器收到查询时,如果要查询的域名由本机负责解析,则返回解析结果给客户机,完成域名解析,此解析具有权威性。如果要查询的域名,不由 Local DNS 服务器解析,但该服务器已缓存了此网址映射关系,则调用这个 IP 地址映射,完成域名解析,此解析不具有权威性。
-
如果 Local DNS 服务器本地区域文件与缓存解析都失效,则根据 Local DNS 服务器的设置(是否递归)进行查询,如果未用开启模式,Local DNS 就把请求发至13台 Root DNS。如果用的是递归模式,此 DNS 服务器就会把请求转发至上一级 DNS 服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根 DNS 或把转请求转至上上级,以此循环。
-
Root DNS 服务器收到请求后会判断这个域名是谁来授权管理,并会返回一个负责该顶级域名服务器的一个 IP。
-
Local DNS 服务器收到 IP 信息后,将会联系负责 .com 域的这台服务器。
-
负责 .com 域的服务器收到请求后,如果自己无法解析,它就会找一个管理 .com 域的下一级 DNS 服务器地址给本地 DNS 服务器。
-
当 Local DNS 服务器收到这个地址后,就会找 example.com 域服务器,10、11重复上面的动作,进行查询。
-
最后 www.example.com 返回需要解析的域名的 IP 地址给 Local DNS 服务器。
-
Local DNS 服务器缓存这个解析结果(同时也会缓存,6、8、10返回的结果)。
-
Local DNS 服务器同时将结果返回给本机域名解析器。
-
本机缓存解析结果。
-
本机解析器将结果返回给浏览器。
-
浏览器通过返回的 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是什么?的主要内容,如果未能解决你的问题,请参考以下文章
笔记: 移动互联网时代 , 如何优化你的网络 —— HttpDNS