根服务器为什么不能用递归

fiy 其他 36

回复

共3条回复 我来回复
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    服务器通常不建议使用递归,原因如下:

    首先,递归会增加服务器的负担和延迟。递归查询是指一个服务器接收到一个查询请求后,如果它无法直接回答该查询,它将转而向其他服务器发送请求。这个过程可能涉及到多次查询和多次网络传输,导致延迟增加和资源消耗增加。

    其次,递归容易引发递归死循环。如果一个服务器在查询链中发现自己的递归查询,就会陷入无限循环。这会导致服务器计算资源的浪费,降低整个系统的稳定性和性能。

    另外,递归查询也会增加安全风险。递归查询时存在被恶意攻击者利用的风险。攻击者可以通过发送恶意查询请求来拖垮服务器,或者利用递归查询的延迟来发动拒绝服务攻击。

    为了解决这些问题,现代的域名系统(DNS)通常使用迭代查询而不是递归查询。迭代查询是指服务器向其他服务器依次发起查询请求,并追踪查询的进程,直到找到答案或者达到查询超时。这种方法可以减少负载和延迟,并提高安全性。

    总之,尽管递归查询在某些情况下可能是有效的,但在大多数情况下,服务器不建议使用递归查询。迭代查询提供了更可靠、更高效、更安全的解决方案,能够更好地满足大规模网络系统的需求。

    1年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    根服务器不可以进行递归查询的原因有以下几点:

    1. 递归查询需负担较大的计算压力:递归查询是指客户端向服务器发送一个完整的域名查询请求,并由服务器递归地去解析该请求,直到找到域名对应的IP地址返回给客户端。由于根服务器是全球DNS系统的最顶层,它负责管理全球域名系统的根域名服务器,数量有限,且其承担的查询请求非常庞大。如果根服务器允许递归查询,那么它将要负担太大的计算压力,导致它无法正常工作。

    2. 安全性问题:如果根服务器允许递归查询,那么恶意用户可以利用这一功能,对根服务器进行DDoS攻击,通过发送大量的递归查询请求来耗尽服务器资源,从而导致服务不可用。为了防止这种情况发生,根服务器通常禁止对外提供递归查询服务,只负责回应迭代查询请求。

    3. 隐私保护:递归查询的过程需要服务器向其他DNS服务器请求解析信息,这涉及到用户的隐私问题。如果根服务器开放递归查询,那么用户的域名查询请求将会暴露给根服务器,并可能被记录下来。为了保护用户的隐私,根服务器通常只提供迭代查询服务,将查询结果返回给客户端,而不会保存用户的查询请求记录。

    4. 分布式系统设计考虑:DNS系统是一个分布式的全球网络,由上百万个DNS服务器组成,根服务器只是其中的一部分。为了实现高效稳定的查询服务,DNS系统的设计原则之一是"权威服务器应该只关注自己的那一部分数据",即每个DNS服务器只负责管理自己的数据区域,并根据查询请求的域名转发到下级服务器。如果根服务器允许递归查询,那么就会破坏了这一原则,使得根服务器不再符合分布式系统的设计目标。

    5. 缓存及性能优化的需要:根服务器经常会被大量重复的查询请求访问到,为了减轻服务器的负担和提高查询速度,根服务器会使用缓存机制,将查询结果保存一段时间,以便下次有相同的查询请求时可以直接返回缓存结果。如果根服务器允许递归查询,这会导致服务器缓存的数据无法及时更新,降低了查询响应速度和准确性。因此,在设计上,根服务器并不具备处理递归查询的功能。

    1年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    根服务器为什么不能用递归的原因有很多。在解释这个问题之前,我们首先需要了解递归和非递归的概念。

    递归是指一个函数或过程在执行过程中调用自身的技术或方法。递归通常用于解决可以被分解为较小的、类似的、稍微简单一些的问题的情况。

    非递归是指一个函数或过程在执行过程中不调用自身的技术或方法。非递归通常用于解决可以被迭代的问题,其中每次迭代都与前一次的结果相关。

    在DNS(Domain Name System,域名系统)中,根服务器是DNS层次结构中最高级别的服务器,负责回答来自其他服务器的查询,并提供对其他DNS服务器的授权。根服务器的数量有限,根服务器的IP地址通常硬编码在DNS软件中。

    虽然递归查询在DNS中通常被用于从根服务器开始逐级查找域名的IP地址,但根服务器不能使用递归查询的原因如下:

    1. 根服务器的数量有限:根服务器的数量有限,只有13个。使用递归查询会导致根服务器负载过大,无法快速响应其他服务器的查询请求。

    2. 递归查询的延迟问题:递归查询需要从根服务器开始逐级查询,直到找到目标域名的IP地址。由于全球DNS系统的分布式特性,不同的根服务器位于不同的地理位置,网络延迟较高。因此,递归查询可能会导致查询延迟较大。

    3. 安全性问题:使用递归查询可能会增加DNS缓存污染和DNS劫持的风险。通过递归查询,恶意用户可以在响应中插入恶意记录或修改响应中的记录,从而导致用户被重定向到恶意网站或受到其他安全威胁。

    为了解决以上问题,DNS采用了迭代查询的方式。迭代查询允许DNS服务器在查询时获取到结果,然后将其返回给客户端,而不是继续向上一级服务器请求。这使得递归查询从根服务器开始只需要进行一次,减轻了根服务器的负载,并提高了查询速度和安全性。

    总结起来,根服务器不能使用递归的主要原因是根服务器的数量有限、递归查询的延迟问题和安全性问题。通过采用迭代查询的方式,可以提高DNS查询的效率和安全性。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部