[架构之路-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

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

根域名服务器:迭代查询

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/159956.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2.3 初探Hadoop世界

文章目录 零、学习目标一、导入新课二、新课讲解(一)Hadoop的前世今生1、Google处理大数据三大技术2、Hadoop如何诞生3、Hadoop主要发展历程 (二)Hadoop的优势1、扩容能力强2、成本低3、高效率4、可靠性5、高容错性 (三…

数据分析案例-基于snownlp模型的MatePad11产品用户评论情感分析(文末送书)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

Android 14 正式发布,已经在 AOSP 中上线

本心、输入输出、结果 文章目录 Android 14 正式发布,已经在 AOSP 中上线前言总结主要更新内容机型支持优化性能的数据体现字体放大、多媒体支持加强Android 14 增加了对 10 位高动态范围 (HDR) 图像的支持提供了新的图形和尺寸管理用户体验 与隐私安全弘扬爱国精神Android 14…

nvm、node、npm解决问题过程记录

在Windows10如何降级Node.js版本:可以尝试将Node.js版本降级到一个较旧的版本,以查看问题是否得以解决。可以使用Node Version Manager (nvm) 来轻松切换Node.js版本,具体完整步骤: 首先,需要安装Node Version Manager…

leetcode-62.不同路径

1. 题目 2. 解答 dp[i][j]表示机器人位于第i&#xff0c;j位置的时候&#xff0c;有多少路径 如果i 0&#xff0c;dp[i][j] 1;如果j 0&#xff0c;dp[i][j] 1;其他情况dp[i][j] dp[i-1][j] dp[i][j - 1] #include <stdio.h>int solve(int m, int n) {int dp[m][…

【python海洋专题二十】subplots_adjust布局调整

上期读取soda&#xff0c;并subplot 但是存在一些不完美&#xff0c;本期修饰 本期内容 subplots_adjust布局调整 1&#xff1a;未调整布局的 2&#xff1a;调整布局 往期推荐 【python海洋专题一】查看数据nc文件的属性并输出属性到txt文件 【python海洋专题二】读取水深…

微信小程序框架---视图层逻辑层API事件

目录 前言 一、小程序框架介绍 1.响应的数据绑定 2.页面管理 3.基础组件 4.丰富的 API 二、视图层 View 1.WXML 数据绑定 列表渲染 条件渲染 模板 2.WXSS 尺寸单位 样式导入 内联样式 选择器 全局样式与局部样式 3.WXS 示例 注意事项 页面渲染 数据处理 …

水滴怕片效果实现

效果展示 CSS 知识点 border-radius 属性运用 FANCY-BORDER-RADIUS 工具 此工具主要是实现不规则的图形。 FANCY-BORDER-RADIUS 工具地址 页面整体布局实现 <div class"container"><div class"drop" style"--clr: #ff0f5b">&l…

Python学习基础笔记六十六——对象的方法

我们已经学习到的对象类型&#xff1a; 整数类型的对象 字符串类型的对象 列表类型的对象 元组类型的对象 对象通常都有属于自己的方法&#xff08;method&#xff09; 调用对象的方法和调用函数差不多&#xff0c;只要在前面加上所属对象的一个点。 var1 [1, 2, 3,4, 5,…

PreScan与MATLAB联合仿真报错

一、 问题&#xff1a; Error:Matlab ||和&&运算符的操作数必须能够转换为逻辑标量值 二、解决办法 必须安装VS2013&#xff08;我装的VS2017不行的&#xff09;&#xff0c;然后重启prescan和MATLAB&#xff0c;编译通过&#xff0c;界面如下&#xff1a; 三、VS…

vue-element-admin—登录页面添加自定义背景

一、效果图 初始效果&#xff1a; 更改背景后效果&#xff1a; 二、操作步骤 1、准备图片 2、更改代码 打开下面路径的 index.vue 文件&#xff1a; vue-element-admin-master\src\views\login\index.vue 也就是登录页面。 对 .login-container 样式代码块内代码做如下…

机器学习之Sigmoid函数

文章目录 Sigmoid函数是一种常用的数学函数&#xff0c;通常用于将实数映射到一个特定的区间。它的形状类似于"S"形状曲线&#xff0c;因此得名。Sigmoid函数在机器学习、神经网络和统计学中经常被使用&#xff0c;主要用于二元分类和处理概率值。 Sigmoid函数的一般…

git-ssh-key协议同步文件

生成秘钥 ssh-keygen -t rsa ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/Beza/.ssh/id_rsa): /c/Users/Beza/.ssh/id_rsa already exists. Overwrite (y/n)? y Enter passphrase (empty for no passphrase): …

idea中maven plugin提示not found

在终端中输入&#xff1a; mvn dependency:resolve 然后 解决了部分问题 Plugin org.apache.maven.plugins:maven-jar-plugin:3.1.0 not found 改为3.3.0了 Plugin maven-source-plugin:3.3.0 not found 改为 2.4 了 版本下降了 感觉后继有坑 待观察

【绝地求生】轻松提升战斗力,分享顶级吃鸡干货!

大家好&#xff01;作为一名热爱绝地求生的玩家&#xff0c;您是否想要提高自己的游戏战斗力&#xff0c;分享顶级的吃鸡干货呢&#xff1f;在本文中&#xff0c;我将带领大家探索如何通过一些实用工具和技巧来实现这些目标。 首先&#xff0c;让我们来了解绝地求生作图工具推荐…

vue3:Module not found: Error: Can‘t resolve ‘fs‘ in

在Vue3 webpack typescript的前端项目中&#xff0c;遇到了Module not found: Error: Can’t resolve ‘fs’ in 的问题。 起因 我在typecript文件中使用fs模块&#xff0c;导致程序报错&#xff0c;找不到fs模块。看了一下node_modules中也有node/type包。 解决方案 1.在…

工程管理系统源码之全面+高效的工程项目管理软件

高效的工程项目管理软件不仅能够提高效率还应可以帮你节省成本提升利润 在工程行业中&#xff0c;管理不畅以及不良的项目执行&#xff0c;往往会导致项目延期、成本上升、回款拖后&#xff0c;最终导致项目整体盈利下降。企企管理云业财一体化的项目管理系统&#xff0c;确保…

2023年淘宝天猫双11红包领取活时间什么时候开始领天猫淘宝双十一红包优惠券?

2023年淘宝天猫双11红包领取活动开始与结束时间 2023年10月24日20:00开始领取至11月11日23:59结束&#xff1b; 2023年淘宝天猫双11红包活动使用开始与结束时间 第一波&#xff1a;2023年10月31日20:00开始使用至11月3日23:59 第二波&#xff1a;2023年11月10日20:00开始使用…

Vue3.0 项目结构及组件

main.js文件 // vue中main.js的作用 // main.js是项目的入口文件&#xff0c;项目中所有的页面都会加载main.js,所以main.js,主要有三个作用&#xff1a; // 1.实例化Vue。 // 2.放置项目中经常会用到的插件和CSS样式。例如&#xff1a; 网络请求插件:axios和vue-resource、图…

5+非肿瘤分析,分型+WGCNA+机器学习筛选相关基因

今天给同学们分享一篇非肿瘤分型机器学习WGCNA实验的生信文章“Identification of diagnostic markers related to oxidative stress and inflammatory response in diabetic kidney disease by machine learning algorithms: Evidence from human transcriptomic data and mou…