域名和ip地址的映射关系记录在DNS服务器中。
如果是由DHCP配置的,本地DNS是由您的互联网服务提供商(ISP)自动分配的,如电信、移动等。它通常位于互联网服务提供商的机房内。
让我们看一下查询的步骤
1.主机从本地域名服务器查询www.tsinghua.edu.cn的IP地址。这一步是递归查询;
2.本地域名服务器会在自己的服务器中找到对应的域名映射关系。如果找到了,它会直接返回IP地址,如果没有,它会询问根域名服务器。
3.根域名服务器会把下次要查询的顶级域名服务器的IP地址告诉本地域名服务器;
4.本地服务器继续向顶级域名服务器发起查询请求;
5.如果顶级域名服务器找到了,就会返回结果。如果没有找到,它将告诉本地域名服务器正确的域名服务器的IP地址,用于下一次查询。
6.本地服务器继续向权限域名服务器发起查询请求;
7.权威域名服务器会告诉本地域名服务器被查询主机的IP地址。当一个权威域名服务器无法给出最终的查询答案时,它会告诉发出请求的DNS客户端接下来应该找到哪个权威域名服务器。
8.本地域名服务器最终将查询结果返回给主机,主机可以与目标建立连接。
由于有缓存,所以会出现缓存同步不及时的情况,所以会有一些请求发送到旧页面。
然后是本地缓存,这往往会使全局负载均衡失败,因为缓存中的地址不一定是这次访问中离客户最近的地方。如果这个地址还给客户,肯定会走弯路。
栗子如:
如果你是运营商A的客户,访问自己运营商的DNS服务器。如果运营商A去权威DNS服务器查询,权威DNS服务器会知道你属于运营商A,并返回到部署在运营商A的一个网址,这样对于同一个运营商的访问会快很多。
但是运营商A比较懒,把解析请求转发给运营商B,如果运营商B去权威DNS服务器查询,权威服务器会误认为你是运营商B,所以在运营商B返回一个网址,结果客户每次访问都会跨运营商,速度会很慢。
但是一旦转换了网络地址,权威的DNS服务器就无法通过这个地址判断客户来自哪个运营商,很有可能会因为转换后的地址而误判运营商,导致跨运营商访问。
例如,当部署两个机房时,DNS通常用于跨机房的负载平衡和容灾。机房出了问题,需要改造。
权威DNS,将域名指向新的IP地址,但是如果更新太慢,那很多用户都会出现访问异常。DNS的查询过程需要递归遍历多个DNS服务器,才能获得最终的解析结果,这会带来一定的时延,甚至会解析超时。
本地运营商可能对某些域名进行劫持、屏蔽。
DNS劫持就是劫持DNS服务器,通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址,从而实现窃取资料或者破坏原有正常服务的目的。
因为传统的DNS存在上面的一些问题,所以这里引出了HTTPDNS。
HTTPNDS其实就是,不走传统的DNS解析,而是自己搭建基于HTTP协议的DNS服务器集群,分布在多个地点和多个运营商。当客户端需要DNS解析的时候,直接通过HTTP协议进行请求这个服务器集群,得到就近的地址。
同时因为默认的域名解析都是走DNS的,使用HTTPDNS需要绕过默认的DNS路径,所以使用HTTPDNS的,大多数是手机应用,需要在手机端嵌入支持HTTPDNS的客户端SDK。
1、跳过LocalDNS,防止本地DNS劫持;
2、直接通过IP访问,平均访问延迟下降;
3、服务器算法筛选最佳节点IP,提升请求成功率;
4、快速更换IP(不受TTL的限制)。
1、App防止恶意劫持;
2、对访问速度要求高的应用;
3、应用、视频加速服务,配合CDN,通过DNS服务器返回最佳节点,提高访问效率;
4、提供更灵活的流量调度能力。
1、在客户端的SDK里动态请求服务端,获取HTTPDNS服务器的IP列表,缓存到本地。随着不断地解析域名,SDK也会在本地缓存DNS域名解析的结果;
2、当手机应用要访问一个地址的时候,首先看是否有本地的缓存,如果有就直接返回,没有就请求HTTPDNS服务器;
2、请求HTTPDNS的服务器,HTTPDNS的服务器都会提供api接口,选择对应的接口发出接口请求,会返回一个要访问的网站的IP列表;
3、客户端,收到返回的IP列表,就能选择IP,建立连接,发起正常访问操作;
4、若客户端向HttpDNS服务器请求失败,则启用备选,走正常DNS解析过程,向LocalDNS发起请求;
5、LocalDNS进行递归查询;
6、最终返回DNS结果;
7、客户端拿到最优IP后,建立连接,发起正常访问操作。
1、传统的DNS有很多问题,例如解析慢、更新不及时。因为缓存、转发、NAT问题导致客户端误会自己所在的位置和运营商,从而影响流量的调度。
2、HTTPDNS通过客户端SDK和服务端,通过HTTP直接调用解析DNS的方式,绕过了传统DNS的这些缺点,实现了智能的调度。
【极客时间-趣谈网络协议】https://time.geekbang.org/column/intro/100007101
【计算机网络第八版】https://www.bilibili.com/video/BV1WP4y1j7JU?p=1
【计算机网络学习笔记】https://github.com/boilingfrog/Go-POINT/tree/master/tcp
【全面理解DNS及HTTPDNS】https://juejin.cn/post/6844903987796246542
作者:liz
出处:https://boilingfrog.github.io/2022/08/26/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-DNS%E5%92%8CHTTPDNS
上一篇:pvc材料有哪些特点
下一篇:北京展览馆10月展会