网络:HTTPDNS协议

DNS主要有两项功能:第一是根据名称查到具体的地址,另外一个是可以针对多个地址做负载均衡,而且可以在多个地址中选择一个距离你近的地方访问。

然而有时候这个地址薄经常会指错路,本来500m处就可以等待了,非得推送到5公里外。为什么会出现这样的情况呢?

当我们发出请求解析DNS的时候,首先,会先连接到运营地本地的DNS服务器,由这个服务器帮我们去整理整颗DNS树上进行解析,然后将解析的结果返回给客户端。但是本地DNS服务器,有自己的“小缺陷”

传统DNS存在哪些问题?

域名缓存问题

它可以在本地做一个缓存,也就是说,不是每一个请求,它都会去访问权威DNS服务器,而是访问过一次就把结果缓存到自己本地,当其他人来访问的时候,直接就返回这个缓存数据。

就相当于它只是凭着记忆来回答这个问题而不是实际去查,这样就导致原来的地址可能已经搬走了但是并没有刷新这个缓存,导致找不到。

在就是本地的缓存,往往使得全局负载均衡失败,因为上次进行缓存的时候,缓存的地址不一定是这次访问离客户最近的地方,如果把这个地址返回给客户,可能会绕远路。

在这里插入图片描述

域名转发问题

缓存问题还可以说本地域名解析服务,还是会去权威DNS服务器中查找,只不过每次都要查找。但是有些小运营商有了请求之后,直接转发给其他运营商去解析,自己自己外包了出去。

这样的问题是,如果是A运营商的客户,访问自己运营商的DNS服务器,如果A运营商去权威DNS服务器查询的话,权威DNS服务器知道你是A运营商的,就返回一个部署在A运营商的网站地址,这样针对相同运营商的访问,速度就会快很多。

但是A运营商偷懒,将解析的请求转发给B运营商,B运营商就会去权威DNS服务器查询的话,权威服务器就会认为,你是B运营商的,那就返回给你一个在B运营商的网站地址吧,结构客户端每次访问都要跨运营商,速度就会很慢。
在这里插入图片描述

出口NAT问题

网关出口的时候,很多机房都会配置NAT,也就是网络地址转换,使得从这个网关出去的包,都转成新的IP地址,当然请求返回的时候,在这个网关,再将IP地址转换回去。所以对于访问来讲是没有任何问题的。

但是一旦做了网络地址转换,权威的DNS服务器,就没法通过这个地址,来判断客户到达来自哪个运营商,而且极有可能因为转换后的地址,误判运营商,导致跨运营商访问

域名更新问题

本地DNS服务器是由不同地址,不同运营商独立部署的,对域名解析缓存的处理上,实现策略也有区别。有的会偷懒,忽略域名解析结果的TTL时间限制,在权威DNS服务器解析变更的时候,解析结果在全网生效的周期非常漫长。但是有的时候,在DNS的切换中,场景对生效时间要求比较高。

比如双机房部署的时候,跨机房的负载均衡和容灾多使用DNS来做。当一个机房出现问题之后,需要修改权威DNS,将域名指向新的IP地址,但是如果更新太慢,那很多用户访问都会出现异常。

解析延迟问题

DNS的查询过程需要递归遍历多个DNS服务器,才能获得最终的解析结果,这会带来一定的时延,甚至会解析超时

HTTPDNS

既然DNS有那么多问题,那怎么办呢?难道退回到直接用IP地址?这显然不合理。于是有了HTTPDNS

HTTPDNS其实就是,不走传统的DNS解析,而是自己搭建基于HTTP协议的DNS服务器集群,分布在多个地址和多个运营商。当客户端需要DNS解析的时候,直接通过HTTP协议进行请求这个服务器的集群,得到最近的地址

这就相当于每家基于HTTP协议,自己实现自己的域名解析,自己做一个自己的地址薄,而不是使用统一的地址薄。但是默认使用的域名解析都是走DNS的,因而使用HTTPDNS需要让默认的DNS路径,就不能使用默认的客户端。使用HTTPDNS,往往是手机应用,需要在手机端嵌入支持HTTPDNS的客户端SDK。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值