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

工程师 - DNS请求过程

DNS(Domain Name System,域名系统)是互联网的重要基础设施之一,其主要功能是将人们容易记忆的域名(例如 www.example.com)转换为计算机能识别的IP地址(例如 192.0.2.1),类似于网络世界中的“电话簿”。
DNS的层级结构
DNS是一个分层的分布式数据库系统,其层级结构从上到下依次为:
1. 根服务器:位于最顶层,负责提供对顶级域服务器的引用。
2. 顶级域(TLD)服务器:如.com、.org、.net等,负责管理其下所有二级域名。
3. 权威名称服务器:负责特定域名的解析,提供域名到IP地址的映射。
4. 本地DNS服务器:通常是ISP提供的,用于缓存域名解析结果,加快查询速度。
DNS的请求过程
DNS 请求的过程涉及多个步骤,从用户发起请求到获取 IP 地址并访问目标网站。以下是 DNS 请求的详细过程:
1. 用户输入域名
当用户在浏览器中输入域名(如 ` www.example.com`)时,设备需要将该域名转换为相应的 IP 地址。这就需要进行 DNS 查询。
2. 检查本地缓存
用户的设备(如计算机、手机)首先会检查本地缓存,查看是否之前已经解析过该域名。如果该域名的解析记录(IP 地址)仍在缓存中且未过期,则会直接使用缓存中的结果,不需要发起新的 DNS 查询。
- 缓存:设备操作系统或应用程序通常会保存最近查询过的域名和 IP 地址的映射,以避免重复的查询,减少网络延迟。
3. 查询本地 DNS 服务器
如果本地没有缓存或缓存已过期,设备会向配置的 DNS 服务器发送查询请求。通常,这个 DNS 服务器是由网络运营商提供的,或者用户可以手动配置为公共 DNS 服务(如 Google Public DNS 或 Cloudflare DNS)。
- 这个查询请求是递归的,也就是说,DNS 服务器会为用户找到最终的解析结果。
4. DNS 服务器检查缓存
本地 DNS 服务器收到查询请求后,会先检查自己的缓存。如果缓存中有该域名的解析结果且未过期,它会直接将结果返回给用户设备。
5. 递归查询过程
如果本地 DNS 服务器没有缓存该域名的解析结果,它将发起递归查询,逐步向上级 DNS 服务器请求域名的解析信息。这个过程会经过以下几个步骤:
# 5.1 根 DNS 服务器
DNS根服务器是整个DNS体系的核心,全球共有13组根服务器,每组服务器有多个副本分布在世界各地。根服务器的主要功能是:
* 提供顶级域的引用:当DNS查询请求到达根服务器时,根服务器会提供查询域名所对应的顶级域服务器的信息(TLD,如 `.com`、`.net`、`.org` 等)。
* 维护顶级域列表:根服务器维护一个包含所有顶级域的列表,并负责顶级域的添加和删除。
- 本地 DNS 服务器首先向“根 DNS 服务器”查询。 
- 根 DNS 服务器不会返回具体的 IP 地址,但它会告诉本地 DNS 服务器,负责该顶级域名(如 `.com`)的 顶级域名服务器 的地址。
# 5.2 顶级域名服务器(TLD DNS)
顶级域服务器是DNS层级结构中的第二层,它们负责管理特定顶级域下的域名。例如,所有以.com结尾的域名都由.com顶级域服务器管理。顶级域服务器的功能包括:
* 解析二级域名:提供特定顶级域下二级域名到IP地址的映射。
* 管理二级域:负责二级域的注册、解析和维护。
- 本地 DNS 服务器接下来向指定的顶级域名服务器(TLD DNS 服务器)发送请求。TLD 服务器负责管理特定顶级域名的域名信息。
- TLD 服务器也不会返回最终的 IP 地址,但它会返回该域名所属的权威 DNS 服务器的地址。
# 5.3 权威 DNS 服务器
- 最后,本地 DNS 服务器向 权威 DNS 服务器 发送查询请求。权威 DNS 服务器是负责该域名(如 ` example.com`)的服务器,它存储着该域名的最终解析记录(IP 地址)。
- 权威 DNS 服务器会返回该域名的 IP 地址。
6. 返回解析结果
权威 DNS 服务器将 IP 地址返回给本地 DNS 服务器,本地 DNS 服务器会将结果缓存起来以供未来查询使用(缓存时间由 DNS 记录中的 TTL 决定)。然后,本地 DNS 服务器将 IP 地址返回给用户的设备。
7. 设备连接目标 IP
一旦用户设备获得了域名对应的 IP 地址,它会使用该 IP 地址通过网络与目标服务器建立连接(通常是通过 TCP/IP 协议),从而加载网站内容。
8. DNS 缓存机制
在整个查询过程中,不同层次的 DNS 服务器(本地设备、本地 DNS 服务器、权威 DNS 服务器)都可能缓存查询结果。缓存机制大大减少了重复查询的次数,加快了域名解析速度。
DNS 请求示例流程图
用户设备 --> 本地缓存 --> 本地 DNS 服务器 --> 根 DNS 服务器 --> TLD DNS 服务器 --> 权威 DNS 服务器 --> IP 地址返回
DNS 查询类型
- 递归查询:在递归查询中,本地 DNS 服务器负责从根服务器开始,逐级查找到最终的解析结果,并返回给用户。
- 迭代查询:在迭代查询中,每一级 DNS 服务器只返回下一级 DNS 服务器的地址,用户或本地 DNS 服务器需要自己逐步查询,直到获得最终的 IP 地址。
其他
根服务器和顶级域服务器在DNS解析过程中扮演着至关重要的角色:
* 解析速度:根服务器和顶级域服务器的响应速度直接影响到DNS查询的效率。
* 可靠性:这些服务器的稳定性和可靠性是整个DNS系统正常运作的保障。
* 安全性:作为DNS体系的关键节点,根服务器和顶级域服务器面临着各种安全威胁,需要采取严格的安全措施。
总结
DNS根服务器和顶级域服务器是域名解析过程中不可或缺的组成部分。它们共同维护着一个庞大的域名和IP地址映射数据库,确保用户能够快速、准确地访问到所需的网站。了解它们的功能和作用,对于优化网站的DNS配置、提升网站访问速度和用户体验具有重要意义。
DNS 请求的过程是通过一系列服务器(本地 DNS 缓存、本地 DNS 服务器、根 DNS 服务器、TLD 服务器和权威 DNS 服务器)逐步进行的域名解析过程。它确保用户可以通过域名访问网站,而无需直接记住复杂的 IP 地址。
参考:
【域名解析DNS专栏】深入理解DNS根服务器与顶级域服务器-阿里云开发者社区

相关文章:

工程师 - DNS请求过程

DNS(Domain Name System,域名系统)是互联网的重要基础设施之一,其主要功能是将人们容易记忆的域名(例如 www.example.com)转换为计算机能识别的IP地址(例如 192.0.2.1),类…...

Solidity智能合约中的事件和日志

1. Solidity 中的事件和日志概述 1.1 什么是事件? 在 Solidity 中,事件(Event)是一种允许智能合约与外部世界进行通信的机制。通过触发事件,可以记录合约执行中的关键操作,并将这些操作发送到链上。事件的…...

第四十一篇-Docker安装Neo4j

创建目录 mkdir /opt/neo4j-data创建 docker run \ -d --name neo4j \ -p 7474:7474 -p 7687:7687 \ -v /opt/neo4j-data/data:/data \ -v /opt/neo4j-data/logs:/logs \ -v /opt/neo4j-data//conf:/var/lib/neo4j/conf \ -v /opt/neo4j-data/plugins:/plugins \ --env NEO4J…...

数电基础(组合逻辑电路+Proteus)

1.组合逻辑电路 1.1组合逻辑电路的分析 1.1.1组合逻辑电路的定义 组合逻辑电路的定义 (1)对于一个逻辑电路,其输出状态在任何时刻只取决于同一时刻的输入状态,而与电路的原来状态无关,这种电路被定义为组合逻辑电路…...

自给自足:手搓了一个睡眠监测仪,用着怎么样?

很久不分享手搓党作品拉! 今天分享一个“基于毫米波雷达的睡眠监测仪”作品! 用Air700E开发板毫米波雷达,手搓一个开箱即用的睡眠监测仪,不花冤枉钱! 来仔细瞧瞧! 一、项目原理及硬件制作 毫米波是指频率…...

Miniforge详细安装教程(macOs和Windows)

(注:主要是解决商业应用anaconda收费问题,这是轻量级的代替,个人完全可以使用anaconda和miniconda) Miniforge 是一个轻量级的包管理器,类似于 Anaconda 和 Miniconda。它主要用于安装基于 conda 的 Python 环境,专注于…...

HDFS Shell作业1

1.在HDFS上建立/user/stu/自己学号,和/user/stu/input目录。 命令: hdfs dfs -mkdir -p /user/stu/22 hdfs dfs -mkdir /user/stu/input 2.用两种不同的方法上传albums.csv至HDFS的学号目录和input目录中。 命令: hdfs dfs -put par…...

工业交换机一键重启的好处

在当今高度自动化和智能化的工业环境中,工业交换机作为网络系统中至关重要的一环,其稳定性和可靠性直接影响到整个生产过程的顺利进行。为了更好地维护这些设备的健康运行,一键重启功能应运而生,并呈现出诸多显著的好处。 首先&am…...

滚雪球学Oracle[4.2讲]:PL/SQL基础语法

全文目录: 前言一、PL/SQL基础语法1.1 变量声明变量声明示例: 二、记录类型与集合类型的使用2.1 记录类型记录类型的定义与使用 2.2 集合类型 三、PL/SQL表与关联数组3.1 PL/SQL表(嵌套表)嵌套表的定义与使用 3.2 关联数组关联数组…...

springboot系列--web相关知识探索二

一、映射 指的是与请求处理方法关联的URL路径,通过在Spring MVC的控制器类(使用RestController注解修饰的类)上使用注解(如 RequestMapping、GetMapping)来指定请求映射路径,可以将不同的HTTP请求映射到相应…...

Oracle 12c在Windows环境下安装

适合初学者使用的Oracle 12c在Windows环境下安装步骤、参数配置、常见问题及参数调优的详细补充说明。 一、Oracle 12c安装步骤 1. 准备工作 在安装Oracle 12c之前,确保你的系统满足以下要求: 操作系统:Oracle 12c支持的Windows版本包括Wi…...

Stable Diffusion绘画 | 来训练属于自己的模型:打标处理与优化

上一篇完成的打标工作,是为了获取提示词,让AI认识和学习图片的特征。 因此,合适、恰当、无误的提示词,对最终模型效果是相当重要的。 Tag 如何优化 通过软件自动生成的 Tag 只是起到快速建立大体架构的作用,里面会涉…...

【论文笔记】Visual Instruction Tuning

🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 基本信息 标题: Visual Instruction Tunin…...

ubuntu 设置静态IP

一、 ip addresssudo nano /etc/netplan/50-cloud-init.yaml 修改前: 修改后: # This file is generated from information provided by the datasource. Changes # to it will not persist across an instance reboot. To disable cloud-inits # ne…...

Java 每日一刊(第19期):泛型

文章目录 前言1. 泛型概述1.1 不使用泛型 vs 使用泛型1.2 泛型的作用 2. 泛型的基本语法2.1 定义带类型参数的泛型类2.2 使用泛型类2.3 泛型方法 3. 泛型类型推断与钻石操作符3.1 类型推断3.2 钻石操作符 4. 通配符的使用4.1 无界通配符 <?>4.2 上界通配符 <? exten…...

windows下安装rabbitMQ并开通管理界面和允许远程访问

如题&#xff0c;在windows下安装一个rabbitMQ server&#xff1b;然后用浏览器访问其管理界面&#xff1b;由于rabbitMQ的默认账号guest默认只能本机访问&#xff0c;因此需要设置允许其他机器远程访问。这跟mysql的思路很像&#xff0c;默认只能本地访问&#xff0c;要远程访…...

深度剖析音频剪辑免费工具的特色与优势

是热爱生活的伙伴或者想要记录美好声音的普通用户&#xff0c;都可能会需要对音频进行剪辑处理。而幸运的是&#xff0c;现在有许多优秀的音频剪辑软件提供了免费版本&#xff0c;让我们能够轻松地施展音频剪辑的魔法。接下来&#xff0c;就让我们一同深入了解这些音频剪辑免费…...

Oracle中TRUNC()函数详解

文章目录 前言一、TRUNC函数的语法二、主要用途三、测试用例总结 前言 在Oracle中&#xff0c;TRUNC函数用于截取或截断日期、时间或数值表达式的部分。它返回一个日期、时间或数值的截断版本&#xff0c;根据提供的格式进行截取。 一、TRUNC函数的语法 TRUNC(date) TRUNC(d…...

【Spring Boot 入门一】构建你的第一个Spring Boot应用

一、引言 在当今的软件开发领域&#xff0c;Java一直占据着重要的地位。而Spring Boot作为Spring框架的延伸&#xff0c;为Java开发者提供了一种更加便捷、高效的开发方式。它简化了Spring应用的搭建和配置过程&#xff0c;让开发者能够专注于业务逻辑的实现。无论是构建小型的…...

PPT 快捷键使用、技巧

前言&#xff1a; 本文操作是以office 2021为基础的&#xff0c;仅供参考&#xff1b;不同版本office 的 ppt 快捷键 以及对应功能会有差异&#xff0c;需要实践出真知。 shift 移动 水平/垂直 移动 &#xff1b; shift 放大/缩小 等比例放大 缩小 &#xff1b; 正圆 正…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

uni-app学习笔记三十五--扩展组件的安装和使用

由于内置组件不能满足日常开发需要&#xff0c;uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件&#xff0c;需要安装才能使用。 一、安装扩展插件 安装方法&#xff1a; 1.访问uniapp官方文档组件部分&#xff1a;组件使用的入门教程 | uni-app官网 点击左侧…...

Yii2项目自动向GitLab上报Bug

Yii2 项目自动上报Bug 原理 yii2在程序报错时, 会执行指定action, 通过重写ErrorAction, 实现Bug自动提交至GitLab的issue 步骤 配置SiteController中的actions方法 public function actions(){return [error > [class > app\helpers\web\ErrorAction,],];}重写Error…...

Python第七周作业

Python第七周作业 文章目录 Python第七周作业 1.使用open以只读模式打开文件data.txt&#xff0c;并逐行打印内容 2.使用pathlib模块获取当前脚本的绝对路径&#xff0c;并创建logs目录&#xff08;若不存在&#xff09; 3.递归遍历目录data&#xff0c;输出所有.csv文件的路径…...

Netty自定义协议解析

目录 自定义协议设计 实现消息解码器 实现消息编码器 自定义消息对象 配置ChannelPipeline Netty提供了强大的编解码器抽象基类,这些基类能够帮助开发者快速实现自定义协议的解析。 自定义协议设计 在实现自定义协议解析之前,需要明确协议的具体格式。例如,一个简单的…...