当前位置: 首页 > news >正文

[架构之路-237]:目标系统 - 纵向分层 - 网络通信 - DNS的递归查询和迭代查询

目录

一、DNS协议与DNS系统架构

1.1 什么是DNS协议

1.2 为什么需要DNS协议

1.3 DNS系统架构

二、DNS系统的查询方式

2.1 递归与迭代的比较

2.2 DNS递归查询

2.3 DNS迭代查询


一、DNS协议与DNS系统架构

1.1 什么是DNS协议

DNS(Domain Name System)协议是互联网中的一种协议,它用于将域名转换为相应的 IP 地址,以实现将人类可读的域名映射到计算机可理解的 IP 地址的过程

在互联网上,每个设备都有一个唯一的 IP 地址,通过这个 IP 地址,可以定位并访问到设备上提供的服务,比如网页服务器、电子邮件服务器等。然而,IP 地址是一串数字,很难被人类轻松记忆。为了方便人们使用,DNS 协议提供了一种映射机制,使用易于记忆的域名来引用每个设备的 IP 地址。

DNS 协议的工作原理如下:

  1. 当用户在浏览器中输入一个域名(比如www.example.com),浏览器会首先检查本地缓存是否有对应的 IP 地址。如果有且没有过期,浏览器直接使用缓存的 IP 地址。否则,浏览器会向本地 DNS 服务器发送询问请求。

  2. 本地 DNS 服务器是由互联网服务提供商(ISP)或本地网络管理员配置的。本地 DNS 服务器首先检查自己的缓存,如果有对应的 IP 地址,就返回给浏览器。否则,本地 DNS 服务器会向根 DNS 服务器发送查询请求。

  3. 根 DNS 服务器是全球分布的一组服务器,它们保存了顶级域名服务器的信息。当根 DNS 服务器收到查询请求时,它会查找到对应的顶级域名服务器的 IP 地址,并将其返回给本地 DNS 服务器。

  4. 本地 DNS 服务器接收到根 DNS 服务器返回的顶级域名服务器 IP 地址后,再向顶级域名服务器发送查询请求。

  5. 顶级域名服务器是负责管理特定顶级域名(比如.com、.org、.net 等)的服务器。当顶级域名服务器收到查询请求时,它会返回下一级域名服务器的 IP 地址。

  6. 这个过程会按照域名的层级结构一级一级地进行,直到最终获取到域名对应的 IP 地址。最后,本地 DNS 服务器将该 IP 地址返回给浏览器,并将其缓存起来以备后续使用。

通过 DNS 协议,用户可以更方便地使用域名来访问互联网上的资源,而无需记住复杂的 IP 地址。同时,DNS 协议还支持通过反向查询将 IP 地址转换为域名。

1.2 为什么需要DNS协议

DNS协议是互联网中必不可少的一项基础协议,它的存在和作用有以下几个重要原因:

  1. 简化访问:DNS协议使得人们可以通过易于记忆和书写的域名来访问网站、发送电子邮件、访问网络服务等。相比于记忆复杂的IP地址,使用域名更加方便和易于使用。

  2. IP地址解析:将域名解析为对应的IP地址是DNS协议的重要功能。通过DNS协议,可以将人类可读的域名映射到计算机可理解的IP地址,从而实现网络上的资源定位和访问。

  3. 负载均衡***:DNS协议还可以通过域名解析的方式实现负载均衡。通过配置多个具有相同域名的IP地址,DNS服务器可以根据负载情况将域名解析为不同的IP地址,从而分发访问请求到多个服务器,均衡服务器负载,提高系统的可用性和性能

  4. 安全性:DNS协议在实际应用中也有助于保障网络安全。例如,DNS协议可以用于实现域名屏蔽和网络内容过滤,以提供更安全和更合规的网络访问。

总而言之,DNS协议的存在非常重要,它提供了一种将易于记忆的域名映射为计算机可理解的IP地址的机制,使得互联网资源更易访问,同时也支持了负载均衡和网络安全等功能。没有DNS协议,互联网的可用性、可访问性和易用性都将受到很大的限制。

1.3 DNS系统架构

DNS(Domain Name System)系统的架构主要由以下几个组成部分组成:

  1. 用户终端设备:用户通过终端设备(如电脑、手机、平板等)进行域名的访问和查询请求。

  2. 本地递归域名服务器:也称为本地域名解析服务器或递归解析器。它是用户设备与DNS系统之间的中间层,负责接收用户终端设备发送的域名查询请求,并根据需要向其他域名服务器发起迭代或递归查询,最终将解析结果返回给用户终端设备。本地递归域名服务器通常由互联网服务提供商(ISP)或企业的网络管理员提供。本地域名通常采用递归查询,这样本地域名全权为主体提供域名服务,简化了主机的DNS协议的复杂度。主机端就可以把域名的查询完全递交给本地域名服务器,不需要与无数个递归的域名服务器交互。

  3. 根域名服务器:根域名服务器是DNS系统的顶级域名服务器,它存储了顶级域名(如".com"、".net"等)的相关信息。根域名服务器的数量有13个(well known),分布在全球各地。当本地递归域名服务器接收到用户查询请求时,如果没有所需域名的缓存记录,它将向根域名服务器发送查询请求,以获取顶级域名服务器的地址。根域名通常采用迭代查询,否则,根域名很容易超过其负载,容易崩溃。

  4. 顶级域名服务器:顶级域名服务器(TLD服务器)是存储特定顶级域名(如".com"、“.net”、".org"等)下的权威域名服务器地址的服务器。当本地递归域名服务器收到根域名服务器返回的顶级域名服务器地址后,它将向顶级域名服务器发送查询请求,以获取权威域名服务器的地址。该服务器的地址是由跟域名服务器传递给本地域名服务器的。

  5. 权威域名服务器:权威域名服务器(Authoritative Name Server)是存储特定域或子域的解析信息的服务器。当本地递归域名服务器向顶级域名服务器发送查询请求后,顶级域名服务器会返回权威域名服务器的地址。本地递归域名服务器再次向权威域名服务器发送查询请求,并获取所需域名的解析结果。

        DNS系统的架构使用层级分布的方式,从根域名服务器到顶级域名服务器,再到权威域名服务器,逐级进行查询,直到找到所需域名的解析结果。这种分布式架构能够支持海量的域名解析请求,并提供可靠的域名解析服务。

备注:DNS服务器是一个系统,不是一个单一的DNS服务器,查询域名也是分层查询的,并非一步到位!!!因此,如果有些域名不在国内,就可能需要到国外查询其IP地址了。

二、DNS系统的查询方式

2.1 递归与迭代的比较

递归和迭代是编程中常见的两种解决问题的方法,它们在实现上有一些显著的区别。

  1. 实现方式:

    • 递归是通过函数调用自身来解决问题的方法,最终的结果是由函数自身返回的。
    • 迭代是通过循环结构重复执行一组操作来解决问题的方法。
  2. 解决问题的思路:

    • 递归采用"自上而下"的思路,将问题分解成更小的子问题,并通过递归调用自身来解决子问题。
    • 迭代采用"自下而上"的思路,通过不断迭代和更新状态,逐步推进解决问题的过程。
  3. 代码结构和复杂性:

    • 递归代码通常较为简洁和直观,易于理解。但递归函数可能涉及多次函数调用,可能导致额外的堆栈内存开销
    • 迭代代码通常需要更多的变量和状态跟踪,可能会显得繁琐。但迭代通常比递归更高效,并能更好地控制内存使用。
  4. 空间复杂度:

    • 递归因为调用自身的过程会产生函数调用栈,可能导致内存消耗较大,存在堆栈溢出的风险。
    • 迭代通常使用循环结构,不涉及函数调用栈,空间复杂度较低。
  5. 效率:

    • 在某些情况下,递归可能效率较低。因为递归会产生函数调用的开销和重复计算子问题的开销。
    • 迭代通常可以采用递推或循环不变式,避免了重复计算和函数调用的开销,因此在某些情况下更高效。

        在选择递归还是迭代时,需要根据具体的问题和实际情况进行权衡。递归通常在问题分解、树结构和回溯等情况下更加直观和简洁。而迭代通常在循环、迭代次数已知的情况下更适合使用。

需要注意的是,在某些情况下,递归和迭代可以结合使用,使用迭代实现递归的效果,称为迭代式递归。这可以帮助避免递归的缺点,提高代码的效率和可读性。

2.2 DNS递归查询

DNS递归查询是指在DNS系统中进行域名解析时,在用户终端设备向本地递归域名服务器发送查询请求后,递归域名服务器将负责迭代地查询其他域名服务器,直到找到所查询域名的准确解析结果,并将结果返回给用户终端设备。

下面是DNS递归查询的一般过程:

  1. 用户终端设备发送DNS查询请求到本地递归域名服务器。
  2. 本地递归域名服务器接收到查询请求后,检查是否有该域名的缓存记录。如果有,则直接返回缓存的解析结果给用户终端设备。
  3. 如果本地递归域名服务器没有缓存记录或缓存已过期,它将向根域名服务器发送查询请求,询问顶级域名服务器的IP地址。
  4. 本地递归域名服务器收到根域名服务器的回复后,从中获取顶级域名服务器的IP地址,并向顶级域名服务器发送查询请求。
  5. 顶级域名服务器收到查询请求后,会返回该域名的权威域名服务器的IP地址给本地递归域名服务器。
  6. 本地递归域名服务器再次向权威域名服务器发送查询请求,并收到解析结果。
  7. 本地递归域名服务器将解析结果返回给用户终端设备,并将解析结果缓存起来,以备后续查询使用。

通过递归查询,DNS系统能够解析出域名的IP地址或其他相关记录,使得用户能够访问相应的网络资源。递归查询过程中,递归域名服务器扮演着重要的角色,它负责向其他域名服务器进行迭代查询,并将最终的解析结果返回给用户。

2.3 DNS迭代查询

DNS迭代查询是指在DNS系统中进行域名解析时,在用户终端设备向本地递归域名服务器发送查询请求后,本地递归域名服务器将负责迭代地查询其他域名服务器,直到找到所查询域名的准确解析结果。

下面是DNS迭代查询的一般过程:

  1. 用户终端设备发送DNS查询请求到本地递归域名服务器。
  2. 本地递归域名服务器接收到查询请求后,检查是否有该域名的缓存记录。如果有,则直接返回缓存的解析结果给用户终端设备。
  3. 如果本地递归域名服务器没有缓存记录或缓存已过期,它将向根域名服务器发送查询请求,询问顶级域名服务器的IP地址。
  4. 根域名服务器收到查询请求后,会返回本地递归域名服务器一个权威域名服务器的地址。
  5. 本地递归域名服务器向权威域名服务器发送查询请求,并收到解析结果。如果权威域名服务器没有该域名的解析结果,它可能会提供一个更低级别的域名服务器的地址,以便本地递归域名服务器继续迭代查询。
  6. 本地递归域名服务器按照所提供的低一级别域名服务器的地址,向该域名服务器发送查询请求,并迭代地进行查询,直到找到所需的解析结果。
  7. 本地递归域名服务器将最终的解析结果返回给用户终端设备,并将解析结果缓存起来,以备后续查询使用。

通过迭代查询,DNS系统能够解析出域名的IP地址或其他相关记录,使得用户能够访问相应的网络资源。迭代查询过程中,本地递归域名服务器充当了重要的角色,它负责依次向各级域名服务器发送查询请求,直到得到最终的解析结果。

答案:A

本地域名服务器:递归查询

根域名服务器:迭代查询

中介域名服务器:递归查询

相关文章:

[架构之路-237]:目标系统 - 纵向分层 - 网络通信 - DNS的递归查询和迭代查询

目录 一、DNS协议与DNS系统架构 1.1 什么是DNS协议 1.2 为什么需要DNS协议 1.3 DNS系统架构 二、DNS系统的查询方式 2.1 递归与迭代的比较 2.2 DNS递归查询 2.3 DNS迭代查询 一、DNS协议与DNS系统架构 1.1 什么是DNS协议 DNS(Domain Name System&#xff…...

vue2 集成 Onlyoffice

缘起于进行了一次在线 Office 解决方案的调研,对比了 Office365、可道云、WPS Office、PageOffice 等厂商,最终敲定了使用 Onlyoffice,故整理了一份 Onlyoffice 从零开始系列教程,这是第一篇。 一、Onlyoffice 是什么&#xff1f…...

天锐绿盾透明加密、半透明加密、智能加密这三种不同加密模式的区别和适用场景——@德人合科技-公司内部核心文件数据、资料防止外泄系统

由于企事业单位海量的内部数据存储情况复杂,且不同公司、不同部门对于文件加密的需求各不相同,单一的加密系统无法满足多样化的加密需求。天锐绿盾企业加密系统提供多种不同的加密模式,包括透明加密、半透明加密和智能加密,用户可…...

六、DHCP实验

拓扑图: DHCP协议,给定一个ip范围使其自动给终端分配IP,提高了IP分配的效率 首先对PC设备选择DHCP分配ip 首先先对路由器的下端配置网关的ip 创建地址池,通过globle的方式实现DHCP ip pool 地址池名称 之后设置地址池的网关地址…...

N沟道场效应管 FDA69N25深度图解 工作原理应用

深力科推荐一款 FDA69N25是高压 MOSFET产品,基于平面条形和 DMOS 技术。 该 MOSFET 产品专用于降低通态电阻,并提供更好的开关性能和更高的雪崩能量强度。 该器件系列适用于开关电源转换器应用,如功率因数校正(PFC)、…...

Python爬虫入门教程

文章目录: 一:Python基础 二:爬虫须知 1.流程 2.遵守规则 三:HTTP请求和响应 1.相关定义 2.HTTP请求响应 2.1 完整的HTTP请求 2.2 完整的HTTP响应 3.Requests库 四:HTML 1.HTML网页结构 2.常用标 参考&…...

使用正则前瞻检查密码强度

使用正则前瞻检查密码强度 题目要求 要求密码必须包含大小写字母,并且至少包含 $,_. 中的一个特殊字符。 在这道题中,我们可以使用正则表达式的前瞻运算来实现。 const reg /^(?.*\d)(?.*[a-z])(?.*[A-Z])(?.*[$,_.])[\da-zA-Z$,_.]{6,12}/;con…...

react+ts手写cron表达式转换组件

前言 最近在写的一个分布式调度系统,后端同学需要让我传入cron表达式,给调度接口传参。我去了学习了解了cron表达式的用法,发现有3个通用的表达式刚好符合我们的需求: 需求 每天 xx 的时间: 0 11 20 * * ? 上面是…...

民安智库(第三方市民健康素养调研)居民健康素养调查的重要性及实施步骤

一、背景和意义 健康素养是衡量一个社区或国家居民对健康知识的理解,以及他们如何将这些知识应用于日常生活中的能力的重要指标。它不仅包括了基本的医学知识,如疾病预防和治疗,也包括了生活方式的改善,如合理饮食和适当运动。因…...

Linux | vim的入门手册

目录 前言 一、什么是vim 二、vim编辑器的模式 1、插入模式 (1)用vim打开文件 (2)进入插入模式 2、默认模式 (1)光标移动 (2)复制、粘贴与剪切操作 (3&#x…...

B053 项目部署

目录 Linux简介虚拟机软件安装安装centos步骤备份系统网络设置 远程访问Linux步骤永久关闭CentOS防火墙 linux命令linux文件系统linux常用命令目录相关命令文件相关命令 安装JDK先卸载自带的JDK安装JDK复制压缩包到linux解压配置环境变量 安装MySql清理旧文件安装mysqlMysql编码…...

视觉Slam面试题(不定时更新)

文章目录 0 引言1 单目、双目、深度相机和RGBD相机的区别2 特征点法与直接法的优缺点3 等距变换、相似变换、仿射变换、射影变换的区别4 单应矩阵、本质矩阵和基础矩阵的区别5 Slam中为什么用李群李代数6 解释Slam中的绑架问题7 ORB、SIFT和SURF特征点检测算法的区别8 什么是对…...

从入门到进阶 之 ElasticSearch 节点配置 集群篇

🌹 以上分享 ElasticSearch 安装部署,如有问题请指教写。🌹🌹 如你对技术也感兴趣,欢迎交流。🌹🌹🌹 如有需要,请👍点赞💖收藏🐱‍&a…...

UE4中无法保存项目问题

系列文章目录 文章目录 系列文章目录前言一、解决方法 前言 取消:停止保存所有资产并返回编辑器。 重试:尝试再次保存资产。 继续:仅跳过保存该资产。 当我点击继续时,关闭项目,然后重新打开项目,发现之前…...

解剖—顺序表相关OJ练习题

目录 一、删除有序数组中的重复项,返回出现一次元素的个数。 二、原地移除数组中所有数值等于val的元素 三、合并两个有序数组 四、旋转数组 五、数组形式的整数加法 一、删除有序数组中的重复项,返回出现一次元素的个数。 26. 删除有序数组中的重…...

NAT网关在阿里云的应用

NAT网关(Network Address Translation Gateway)是一种网络地址转换服务,提供NAT代理(SNAT和DNAT)能力。NAT是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。NAT实际上是为解决I…...

操作系统体系结构和OS

1.冯诺依曼计算机体系 关于冯诺伊曼系统,在这里我只是简单讲一讲,更加详细的内容可以看我的计算机组成系列。 常见的笔记本、台式机,不常见的服务器、工作站,大部分都遵守“冯诺依曼体系”,因此该计算机体系就是现代…...

Flutter ☞ 常量

常量 只能被定义一次,并且不可修改的值叫做常量。 在 Flutter 中有两种常量修饰方法 finalconst 相同点 类型声明可以省略 final String a 123; final a 123;const String a 123; const a 123;初始化后不能再赋值 final a 123; a abc; // 错误const a …...

C++ 配置VSCode开发环境

C配置VSCode开发环境 简介 Visual Studio Code (VSCode) 是一款开源的轻量级代码编辑器。它支持许多编程语言,包括C。本文档将详细介绍如何在Windows环境下配置VSCode的C开发环境。 安装步骤 1. 安装Visual Studio Code 首先,你需要下载并安装Visua…...

Arduino_STM32整理贴

Arduion-STM32 stm32duino 让stm32 在arduino中使用 源代码:https://github.com/stm32duino/Arduino_Core_STM32 busybox文件位置 stm32duino 下有个stm32tool 项目,内含有busybox.exe 使用usb转TTL烧写 使用 PA9 PA10 端口 PA9接 RX ,PA10接 TX …...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...

云计算——弹性云计算器(ECS)

弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...