DNS解析流程分为递归查询和迭代查询,递归查询是以本地名称服务器为中心查询, 递归查询是默认方式,迭代查询是以DNS客户端,也就是客户机器为中心查询。其实DNS客户端和本地名称服务器是递归,而本地名称服务器和其他名称服务器之间是迭代。

在递归查找中,DNS服务器执行递归并继续查询其他DNS服务器,直到它具有返回给客户端的IP地址为止(通常是用户的操作系统)。在迭代DNS查询中,每个DNS查询都使用一个地址直接响应客户端,以供另一个DNS服务器询问,并且客户端继续查询DNS服务器,直到其中一个使用给定域的正确IP地址进行响应为止。

(简单来说递归实际上就是DNS服务器迭代)。

递归DNS优点

由于缓存递归DNS查询通常比迭代查询的解析速度更快。递归DNS服务器将对执行的每个查询的最终答案进行缓存,并将该最终答案保存一定的时间(称为生存时间)。

当递归解析器收到对其缓存中已经具有的IP地址的查询时,它可以快速将缓存的答案提供给客户端,而无需与任何其他DNS服务器进行通信。如果aDNS服务器为许多客户端提供服务和/或b请求的网站非常受欢迎,则很有可能从缓存中快速提供响应。

递归DNS缺点

开放的DNS服务器上允许递归DNS查询会造成安全漏洞,因为此配置可使攻击者执行DNS放大攻击和DNS缓存中毒

DNS放大攻击

由于每个机器都要求使用欺骗性IP地址打开DNS解析器,该IP地址已更改为目标受害者的真实源IP地址,然后目标会从DNS解析器接收响应。为了创建大量流量,攻击者以尽可能从DNS解析器生成响应的方式构造请求。结果,目标接收到攻击者初始流量的放大,并且他们的网络被虚假流量阻塞,导致拒绝服务。

具体细节: https://www.jianshu.com/p/2b339de46c86

DNS缓存中毒

DNS缓存中毒也称为DNS欺骗,是一种攻击,旨在查找并利用DNS或域名系统中存在的漏洞,以便将有机流量从合法服务器吸引到虚假服务器上。这种攻击往往被归类为域欺骗攻击(pharming attack),由此它会导致出现很多严重问题。首先,用户往往会以为登陆的是自己熟悉的网站,而它们却并不是。与钓鱼攻击采用非法URL不同的是,这种攻击使用的是合法的URL地址。

具体细节: https://blog.csdn.net/weixin_43199326/article/details/88231721

DNS递归解析和迭代解析的更多相关文章

  1. DNS递归和迭代原理

    11.3.7 DNS递归解析原理 “递归解析”(或叫“递归查询”,其实意思是一样的)是最常见,也是默认的解析方式.在这种解析方式中,如果客户端配置的本地名称服务器不能解析的话,则后面的查询全由本地名称 ...

  2. linux dns子域授权 split分离解析 缓存dns服务器

    DNS子域授权作用:适用于同一个DNS组织父/子域名的解析工作由不同的dns服务器负责父dns服务器应该有为子域名迭代的能力 上下级区域属于不同的机构管理:.cn与.Anonymous.cn.cn需要 ...

  3. DNS 递归/迭代 原理

    递归查询 递归:客户端只发一次请求,要求对方给出最终结果.一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结 ...

  4. DNS的工作原理及解析

    DNS协议是互联网核心协议之一.不管是上网浏览,还是编程开发,都需要了解一点它的知识. 一.什么是DNS? DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次 ...

  5. DNS服务器原理简述、搭建主/从DNS服务器并实现智能解析

    1. TLD:Top Level Domain 顶级域名 组织域:.com, .net, .org, .gov, .edu, .mil 国家域:.iq, .tw, .hk, .jp, .cn, ... ...

  6. 十五.DNS子域授权、分离解析、缓存DNS服务器

    1.搭建基本DNS服务器 pc7: 1.1 安装软件包 ]# yum -y install bind-chroot bind bind         //域名服务包 bind-chroot  //提 ...

  7. DNS的正向解析与反向解析

    DNS域名解析服务(Domain Name System)是用于解析域名与IP地址对应关系的服务,功能上可以实现正向解析与反向解析: 正向解析:根据主机名(域名)查找对应的IP地址. 反向解析:根据I ...

  8. 【死磕 Spring】—– IOC 之解析Bean:解析 import 标签

    原文出自:http://cmsblogs.com 在博客[死磕Spring]----- IOC 之 注册 BeanDefinition中分析到,Spring 中有两种解析 Bean 的方式.如果根节点 ...

  9. XML 解析之 jaxp 解析器

    XML 的解析方式有两种方式: DOM 解析和 SAX 解析. DOM 解析: 根据 XML 的层级结构, 在内存中分配一个树形结构, 把 XML 的标签, 属性和文本都封装成对象. 优点: 可以实现 ...

随机推荐

  1. peewee的简单使用

    peewee的简单使用 peewee是一个轻量级的ORM框架,peewee完全可以应对个人或企业的中小型项目的Model层,上手容易,功能强大. 一.安装peewee模块 使用pip命令工具安装pee ...

  2. 使用 JSON 协议的 gRPC

    JSON payload 实现简易的请求和响应的内省. 介绍 大家经常说 gRPC 是基于 Google Protocol Buffers payload 格式的,然而这不完全正确.gRPC payl ...

  3. MSDN 无法显示的问题 2010-03-21 21:08

    MSDN 无法显示的问题regsvr32 "C:\Program Files\Common Files\Microsoft Shared\Help\hxds.dll" .试图运行项 ...

  4. 如何限制ip访问Oracle数据库

    一.概述 本文将给大家介绍如何限制某个ip或某个ip段才能访问Oracle数据库 通过sqlnet.ora 通过/etc/hosts.deny和/etc/hosts.allow 通过iptables ...

  5. Azure Command Line (一)入门

    一,引言 今天我们讲解一个新的 Azure 的知识,叫 “Azure Command Line”,简称 Azure CLI,具体概念是什么,我这里也不多说了,总结下来,Azure CLI 其实就是 用 ...

  6. java多线程:线程同步synchronized(不同步的问题、队列与锁),死锁的产生和解决

    0.不同步的问题 并发的线程不安全问题: 多个线程同时操作同一个对象,如果控制不好,就会产生问题,叫做线程不安全. 我们来看三个比较经典的案例来说明线程不安全的问题. 0.1 订票问题 例如前面说过的 ...

  7. 手把手教你写VueRouter

    Vue-Router提供了俩个组件 `router-link` `router-view`, 提供了俩个原型上的属性`$route` `$router` ,我现在跟着源码来把它实现一下 开始 先看平时 ...

  8. jqgrid 获取选中用户的数据插入

    因为查询出的表和被插入的表不是在同一个数据库,所以先从前台jqgrid表格中获取到数据后,再插入表中. 实现: 获取到jqgrid选中 的每行数据之后,发ajax请求把数据以json格式传入后台,后台 ...

  9. neutron plugin 与 extension 编写流程

    原文链接:neutron plugin 与 extension 编写流程 参考: 怎样写 OpenStack Neutron 的 Plugin (一)怎样写 OpenStack Neutron 的 P ...

  10. python安装numpy、scipy、gensim以及报错unable to import 'smart_open.gcs', disabling that module处理

    首先,安装gensim库,必须先安装numpy+mkl和scipy 安装顺序是依次安装numpy+kml.scipy.gensim,根据自己Python下载的版本进行下载 如果你的库里面有numpy. ...