HttpDNS与传统DNS的区别

一、DNS

1、什么是DNS

DNS(Domain Name System,域名系统),DNS 服务用于在网络请求时,将域名转为 IP 地址。能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的 IP 数串。

传统的基于 UDP 协议的公共 DNS 服务极易发生 DNS 劫持,从而造成安全问题。

2、DNS 域名系统结构

Root 域名:DNS 域名使用时,规定由尾部句号来指定名称位于根或更高级别的域层次结构

Top Level 顶级域名:用来指示某个国家、地区或组织使用的名称的类型名称。如 .com

Second Level 域名:个人或组织在 Internet 上使用的注册名称。如 taobao.com

Third Level 域名:已注册的二级域名派生的域名。如 www.taobao.com

3、DNS解析过程

在这里插入图片描述

当一个用户在地址栏输入www.taobao.com时,DNS解析有大致十个过程,如下:

  1. 浏览器查缓存:浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址,如果有,解析结束。同时域名被缓存的时间也可通过TTL属性来设置。

  2. 操作系统缓存:如果浏览器缓存中没有,浏览器会检查操作系统缓存中有没有对应的已解析过的结果。而操作系统也有一个域名解析的过程。

    # 查看 windows 本地缓存DNS 解析记录的命令
    
    C:\Users\Admin>ipconfig /displaydns                                  --->>  查看命令
    
    
    # 清除 windows 客户端本地缓存的DNS 解析记录的命令
    
    C:\Users\Admin>ipconfig /flushdns
    
     
    # windows 系统下的hosts 域名解析记录的位置
    
    C:\Windows\System32\drivers\etc\hosts

     

  3. 请求本地域名服务器(LDNS):如果至此还没有命中域名,才会真正的请求本地域名服务器(LDNS)来解析这个域名,这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,一般都会缓存域名解析结果,大约80%的域名解析到这里就完成了。

  4. Root Server 域名服务器:如果LDNS仍然没有命中,就直接跳到Root Server 域名服务器请求解析

  5. 根域名服务器返回给LDNS一个所查询域的主域名服务器(gTLD Server,国际顶尖域名服务器,如.com .cn .org等)地址

  6. 此时LDNS再发送请求给上一步返回的gTLD

  7. 接受请求的gTLD查找并返回这个域名对应的Name Server的地址,这个Name Server就是网站注册的域名服务器

  8. Name Server根据映射关系表找到目标ip,返回给LDNS

  9. LDNS缓存这个域名和对应的ip

  10. LDNS把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中,域名解析过程至此结束

)LocalDNS服务器

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

Local DNS 服务器,这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,一般都会缓存域名解析结果,大约80%的域名解析到这里就完成了。

2)域名劫持

浏览器中输入 www.taobao.com,发出解析请求。本机的域名解析器 resolver 程序查询本地缓存和 host 文件中是否为域名的映射关系,如果有则调用这个 IP 地址映射,完成解析。

这种操作系统级别的域名解析规则也被很多黑客利用,通过修改你的hosts文件里的内容把特定的域名解析到他指定的ip地址上,造成所谓的域名劫持。所以在windows7中将hosts文件设置成了readonly,防止被恶意篡改。

如何解决?

“域名劫持”的根源在于:域名服务器上的记录被人给改了。最直接的办法就是不要使用这种 ISP 提供的Local DNS 域名服务器,TCP/IP 参数中设置的首选 DNS 服务器,改用国外那些比较靠谱的。
目前口碑最好的,大概是 Google 提供的两个域名服务器,IP地址 分别是 8.8.8.8 和 8.8.4.4 ——这俩不光是地址好记,更重要的是,不会耍流氓。

 

二、HttpDNS

HTTPDNS 利用 HTTP 协议与 DNS 服务器交互,代替了传统的基于 UDP 协议的 DNS 交互,绕开了运营商的 Local DNS,能够有效避开 DNS 层面的拦截和故障,比如域名污染,域名递归服务器缓存不刷新,运营商域名劫持等问题,提高域名解析效率。

另外,由于 DNS 服务器端获取的是真实客户端 IP 而非 Local DNS 的 IP,能够精确定位客户端地理位置、运营商信息,从而有效改进调度精确性,提高分发精准度,解决用户 DNS 设置错误造成的访问时延加大,响应过慢的问题。

1、HTTPDNS原理

  • 常规域名解析是通过 DNS 协议进行解析的,其最终结果就是获取域名对应的真实服务器地址,无法绕开 DNS 拦截和故障问题。
  • HTTPDNS 则是以 HTTP 的方式代替传统 DNS 协议传递解析结果,能够有效避开 DNS 层面的拦截和故障。
  • 客户端直接访问 HTTPDNS 接口(直接通过ip访问,而不是通过域名访问),根据客户端源IP地址,查询 CDN 内部调度策略,通过响应请求的方式,获取域名的最优节点 IP,缓存到本地。(基于容灾考虑,建议保留使用运营商 LocalDNS 解析域名的方式作为备选。)
  • 客户端获取到业务 IP 后,就向直接往此 IP 发送业务协议请求。以 HTTP 请求为例,通过在 header 中指定 host 字段,向 HTTPDNS 返回的 IP 发送标准的 HTTP 请求即可。
  • 请求方式如:
请求: curl http://106.2.xxx.xxx/d?dn=c.m.163.com
响应:{"dns":[{"host":"c.m.163.com","ips":["223.252.199.12"],"ttl":300,"http2":0}],"client":{"ip":"106.2.81.50","line":269692944}}

HTTPDNS解决的问题

1. 运营商域名劫持

运营商为了减少跨网结算成本,会在本地运营商网内搭建内容缓存服务器。本地本网用户访问时,运营商把域名强行指向内容缓存服务器的 IP 地址,从而把本地本网流量完全留在了本地,减少了跨网访问

为了获取更多利益,部分运营商们还会将对应解析内容替换成第三方广告联盟的广告或是钓鱼网站等

2. 转发解析请求

运营商的 LocalDNS 会存在解析转发的情况,解析转发是指运营商自身不进行域名递归解析,而是把域名解析请求转发到其它运营商的递归 DNS 上

客户使用 CDN 加速服务后,当解析被运营商转发, DNS服务端收到的域名解析请求的来源 IP 就成了其它运营商或其他地区的 IP (DNS 服务端会根据来源 IP 进行解析调度),那么用户流量就被导向了错误的节点,造成跨域、跨省、跨运营商访问后果:网站访问缓慢甚至无法访问。

3. DNS 多出口

DNS 多出口,是指运营商的 LocalDNS 按照标准 DNS 协议进行递归查询时,由于存在网络多出口且配置了目标路由 NAT 的情况,最终导致 LocalDNS进行递归解析的出口 IP 非本网 IP 地址。DNS 多出口的情况会造成调度系统收到的域名解析请求来源 IP 变成其它运营商的 IP ,最终引发域名解析错误、流量跨网。

4. DNS 攻击

当前网络攻击越来越激烈,从历史来看,每次攻击的影响范围都很大,主要攻击类型:

① 针对公网 dns 服务的攻击,这个攻击影响的是所有解析用户。一旦受攻击,意味着所有用户的域名解析都会出问题,大家上网都会出现故障。

② 针对特定 dns 服务的攻击,通常为 ddos 攻击,网宿平台可应对,其余类型攻击则影响网宿平台该 DNS 服务的所有用户。

由于 CDN 加速是通过 CNAME 的方式别名到网宿入口,无论是公网 DNS 受到攻击还是网宿 DNS 受到攻击,都将对客户的服务造成严重影响,甚者直接导致区域服务中断。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: HttpDNS传统DNS之间存在一些区别。首先,HttpDNS的服务器地址一般是固定的,可以通过DNS方式获取其IP地址,或者将其IP地址写死在客户端中。而传统DNS的服务器地址是通过域名解析得到的。其次,HttpDNS可以绕过域名缓存问题,提供更快的解析速度。传统DNS存在域名缓存问题,可能导致解析结果不及时或不准确。此外,HttpDNS可以避免域名劫持问题,而传统DNS可能存在本地运营商对某些域名进行劫持或屏蔽的情况。因此,HttpDNS相对于传统DNS在解析速度和可靠性方面有一些优势。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [HttpDNS传统DNS区别](https://blog.csdn.net/idaretobe/article/details/128637448)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [DnshttpDNS区别](https://blog.csdn.net/apple_51931783/article/details/128410769)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值