D课堂 | 什么是DNS?DNS是怎么运作的?

news2024/10/7 14:21:54

想象一下,你在一个陌生的城市,想去一家餐厅品尝美食。你知道这家餐厅的名字,但却不知道它的具体位置。

这时,你可能会打开手机地图,输入餐厅的名字,然后地图会告诉你如何到达那里。

在互联网世界里,DNS(域名系统)就扮演了类似导航、带路人的角色

7a5c376a1eddc41a62879941bddbd3cf.png

DNS的诞生

在互联网的早期,计算机之间的通信是通过IP地址来进行的。

然而,由于IP地址是一串难以记忆的数字,如192.168.1.1,这对于人类的记忆和使用带来了极大的不便。

于是,为了解决这个问题,DNS应运而生。它的核心功能就是将容易记忆的域名(如www.dnspod.cn)转换为实际的IP地址(如183.60.155.197),以便我们更好的访问互联网。

e17f30165e19ca6a4291c9b7e06e3f32.jpeg

DNS的运作原理

D妹在浏览器中输入一个网址www.dnspod.cn,然后快速地打开了想要访问的网站,这背后究竟发生了什么?

为了让大家更好的理解DNS的“上班”路线,下面请随D妹来探个究竟👇🏻

606d0429777c5c1d6f7f9f32600b7ad2.png

当D妹从浏览器中输入www.dnspod.cn后,将会进行以下过程:

01

本地 DNS 服务器首先向根 DNS 服务器发送请求查询顶级 DNS 服务器地址,既dnspod.cn的.cn地址。

02

获取顶级 DNS 服务器.cn地址后,本地 DNS 服务器向顶级 DNS 服务器发送请求查询权威 DNS 服务器地址。

03

因dnspod.cn域名解析托管在 DNSPod,则会获取到 DNSPod 权威 DNS 服务器地址。获取地址后,本地 DNS 服务器向 DNSPod 权威 DNS 服务器发送请求查询网站服务器地址。

04

权威 DNS 服务器返回网站服务器地址到本地 DNS 服务器。本地 DNS 服务器获取网站服务器地址后,浏览器向网站服务器地址发送请求,网站响应后则返回网页内容。

d674926745163d0486fd25c0a89ed151.png

简单来说,我们从浏览器中输入网站域名后,会依次向根域名服务器、顶级域名服务器、权威域名服务器查询网站服务器的IP地址,获取IP地址后浏览器发送请求,网站响应后返回网页内容,然后就看到网站了。

从DNS的”上班“路线我们可以看出,我们要正常访问一个网站,DNS在机器背后可走了不少路。DNS域名解析包括两种查询模式,一种是递归查询,另一种是迭代查询。

递归查询

递归查询是客户端向本地 DNS 服务器发起的查询请求,要求本地 DNS 服务器必须返回一个结果。这个结果可以是目标IP地址,也可以是一个错误信息。

在递归查询中,本地 DNS 服务器如果没有请求的信息,它会向其他 DNS 服务器发起查询请求,并一直查询下去,直到找到结果或者返回错误信息。对于客户端来说,只需要发起一次请求,然后等待DNS服务器返回结果。

举个🌰:假设D妹想访问 dnspod.cn,D妹的设备会向本地 DNS 服务器发起一个递归查询请求。如果本地 DNS 服务器没有这个域名的缓存记录,它会向其他 DNS 服务器查询,比如向根服务器、顶级域服务器和权威域服务器查询,直到找到IP地址。最后,本地 DNS 服务器将结果返回给D妹的设备。

6332bdb26b6ba0719d4538766b535d33.png

迭代查询

迭代查询是客户端向本地 DNS 服务器发起的查询请求,但 DNS 服务器不需要返回一个确切的结果。

如果本地 DNS 服务器没有请求的信息,它会返回一个其他可能知道结果的 DNS 服务器的地址。客户端需要自己去联系这个新的 DNS 服务器,发起新的查询请求。这个过程会不断重复,直到客户端找到目标IP地址或者返回错误信息。

举个🌰:假设D妹想访问 dnspod.cn ,D妹的设备会向本地 DNS 服务器发起一个迭代查询请求。如果本地 DNS 服务器没有这个域名的缓存记录,它会返回一个根服务器的地址。D妹的设备会向根服务器发起新的查询请求。根服务器可能会返回一个顶级域服务器的地址,D妹的设备继续查询,直到找到IP地址。

9983870429fe695083ac405e82028e9c.png

递归查询中,本地 DNS 服务器负责查询其他服务器并返回结果,客户端只需发起一次请求;而迭代查询中,客户端需要不断地向其他域名服务器发起新的请求,直到找到结果。

4d22649de328e5af15c5969691120dc9.jpeg

到这里,相信你对DNS已经有一定的认识了。那么再回到最开始,D妹在浏览器中输入一个网址www.dnspod.cn,然后会发生什么?

一般来说,就会像我们上面讲的DNS运作原理一样,会经过递归查询和迭代查询,最终看到网页的内容。(再来复习一下这张图)

1923c3586b9877d8aaf2c5faaba62029.png

再进阶一下,如果D妹访问的这个本地 DNS 服务器,服务区域内经常有很多用户访问这个网站,那么本地 DNS 服务器会将这个网站的IP地址保存在缓存里,那么D妹访问的时候可以直接从本地 DNS 服务器的缓存中查找IP地址,也就是只走递归查询,不需要再走迭代查询。这样可以减少每次查询时的性能消耗。

4d04f7430e2a0de54ba12d55c663b864.png

再再进阶一下,如果D妹经常访问这个网站,只要没有对缓存策略(cache-control)做特殊设置,一般D妹的浏览器会把网站对应的IP地址保存在缓存里,那么D妹就不需要走递归查询和迭代查询,直接就能向网站服务器发起请求,响应后就能看到网站的内容啦。

a46a954a74afefa8e50c26e6f4172e5e.png

DNS核心作用就是实现域名与IP地址的相互转换,这样我们就可以通过输入域名访问网站,而不需要记住复杂的IP地址。它就像是网络世界的导航仪,为我们提供了方便、快捷、安全的网络访问服务。

所以,下次当你在浏览器中输入一个网址时,别忘了感谢那个默默为你指路的导航仪——DNS!

栏目介绍:

《D课堂》是腾讯云轻量云产品中心推出的一档内容丰富、实用性强的科普栏目。本栏目以域名、DNS解析、证书、备案等产品为核心,呈现寓教于乐的科普内容,同时还将分享实用的产品使用技巧,助您轻松驾驭云产品。

《D课堂》旨在通过每期的精彩分享,我们将由浅入深地剖析各类产品原理,与您一起学习DNS相关的知识,解答您在使用产品过程中遇到的各种疑问。欢迎您持续关注《D课堂》!

本期互动

efd4a72ba373d83f958c8499f4609704.png

关于DNS,你还有哪些感兴趣的内容or疑问?欢迎评论区留言告诉我们,在下一次《D课堂》中,期待能为你解答!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

向量数据库库Milvus Cloud2.3 的QA问题

1. Milvus 从 2.2.x 升级至 2.3.x 的最大变化是什么? 如果用一句话来总结,那就是使用的场景更加丰富了。具体可以从两个方面来体现,即部署环境和用户的使用感。 例如,从部署环境来看,Milvus 原来只支持 X86 架构的 CPU,版本升级后,不仅可以支持 GPU,还能够支持 ARM 架构…

二叉树MFC实现

设有一颗二叉树如下; 这似乎是一颗经常用作示例的二叉树; 对树进行遍历的结果是, 先序为:3、2、2、3、8、6、5、4, 中序为:2、2、3、3、4、5、6、8, 后序为2、3、2、4、5、6、8、3&#xff1b…

Kubernetes 学习总结(38)—— Kubernetes 与云原生的联系

一、什么是云原生? 伴随着云计算的浪潮,云原生概念也应运而生,而且火得一塌糊涂,大家经常说云原生,却很少有人告诉你到底什么是云原生,云原生可以理解为“云”“原生”,Cloud 可以理解为应用程…

深入浅出DAX:数据分析

深入浅出DAX:数据分析 01、区间分析 1. 数据区间分析 在Power BI中,选择“主页”→“输入数据”,创建“区间辅助表”,如图1所示。 ■ 图1 区间辅助表 创建度量值M.区间次数,表达式如下: M.区间次数 VA…

POJ 2991 Crane 线段树

一、题目大意 我们有一台起重机的机械臂,它由多个节相连组成,如下所示。 起初的时候,所有的节之间的角度都是180度,是竖直的,我们可以扭转其中任意两个节的角度,每一次移动后题目需要输出题目最后一个点相…

干货 | 工商业用户负荷分析与预测系统项目

以下内容整理自2023年夏季学期大数据能力提升项目《大数据实践课》同学们所做的期末答辩汇报。 我们将从六个方面进行展示。 第一部分是项目背景与需求分析。在“双碳”目标的大背景下,能源电力行业面临着深刻的变革,负荷预测作用也更加突出。虚拟电厂由…

蓝牙无线IP网络多功能多媒体音柱带遥控

SV-29810T-蓝牙无线IP网络多功能多媒体音柱带遥控 蓝牙无线IP网络多功能多媒体音柱SV-29810T产品用途: ◆室外室内豪华型防水音柱式一体化网络音频解码扬声器,用于广播分区音频解码、声音还原作用◆应用场地如火车站、地铁、教堂、工厂、仓库、公园停车…

lv5 嵌入式开发-7 有名管道和无名管道

目录 1 进程间通信介绍 2 无名管道 2.1 无名管道特点 ​编辑 2.2 读无名管道 2.3 写无名管道 3 有名管道 3.1 有名管道特点 3.2 写有名管道 3.3 读有名管道 掌握:进程间通信方式介绍、无名管道特点、无名管道创建、无名管道读写特性;有名管道…

【面试题】——JavaIO篇(23题)

文章目录 1.什么是Java IO?2.如何从数据传输方式理解IO流?3.Java IO设计上使用了什么设计模式?4.什么是Java NIO?5.什么时BIO?6.什么是AIO?7.你怎么理解同步IO和异步IO?8.你怎么理解阻塞IO和非阻塞IO?9.IO中的输入流和输出流有…

Python项目实战:多线程并行计算 + 多进程并行计算

文章目录 一、简介:【进程 多进程】 【线程 多线程】1.1、系统支持的CPU核心处理器1.2、核心处理器的参数解析:12th Gen Intel( R ) Core( TM ) i7-12700 2.10 GHz 二、函数详解2.0、计算CPU核心数:os.cpu_count() mp.cpu_count()2.1、用…

MongoDB 解析:灵活文档数据库与 Docker Compose 部署

MongoDB 是一款开源、高性能的 NoSQL 数据库,以其无模式的文档存储格式(BSON)而著称,广泛应用于众多开源项目,包括但不限于 Yapi 等。它在大规模数据存储和实时数据处理方面表现出色,因此备受青睐。在本文中…

C++学习——优先级队列模拟实现与仿函数初步认识

目录 ​编辑 一,优先级队列 二,实现 1.构造priority_queue类 2.简单的top()与size()还有empty()函数 3.push函数 4.pop函数 5.构造函数 6.测试 三,仿函数 1.介绍 2.使用 一,优先级队列 优先级队列——priority_queue。这…

【C++】gnustl_static 与 c++_shared 的区别

参考:GNU与cSTL的区别与联系-爱代码爱编程​ gnustl_static 与 c_shared 的区别: 不同版本的 STL TSL是一个与STL兼容的多线程支持库。 STLport是一个可移植、高度兼容的STL实现。 SGI STL是最早的STL实现之一,对STL的发展起到了重要的作用…

深入MySQL数据库进阶实战:性能优化、高可用性与安全性

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 MySQL是世界上最流行的开…

Windows 下 MySQL 8.1.0 安装及配置图文指南,快速搭建实验学习环境

目录 下载 MySQL安装 MySQL配置 MySQL修改密码配置环境变量 卸载 MySQL开源项目微服务商城项目前后端分离项目 下载 MySQL 访问 MySQL 下载地址:https://dev.mysql.com/downloads/mysql/ 下载 MySQL 时,你可以选择 ZIP 包或 MSI 安装: ZIP包…

赴日IT课程分享 如何尽快就职日本IT公司?

想要做赴日IT工作,我们先要搞清楚一个问题,那就是日本IT行业的缺口真的很大吗?答案是肯定的,对于有3-5年实际开发经验,能独立做开发,日语口语也好,不需要协助就能独立跟日本人交流的人&#xff…

DeepFace【部署 01】轻量级人脸识别和面部属性分析框架安装使用详解(网盘分享模型文件)

DeepFace安装使用 1.安装1.1 官方的三种方式1.2 使用的方式 2.使用2.1 模型文件下载2.2 Facial Recognition2.3 Face Verification2.4 Face recognition2.5 Embeddings2.6 Face recognition models2.7 Similarity2.8 Facial Attribute Analysis2.9 Face Detectors 3.总结 Githu…

知网G4期刊-基础教育论坛-如何投稿?

《基础教育论坛》知网 3版5000字符 24年上半年刊期,可收中小学基础教育,幼儿教育等教育全科文章。 《基础教育论坛》主要刊登有关教育教学理论探讨及课程改革、教学改革、考试改革研究等方面的文章,为广大基础教育工作者提供学术交流的…

Lua学习笔记:debug.sethook函数

前言 本篇在讲什么 使用Lua的debug.setHook函数 本篇需要什么 对Lua语法有简单认知 依赖Sublime Text工具 本篇的特色 具有全流程的图文教学 重实践,轻理论,快速上手 提供全流程的源码内容 ★提高阅读体验★ 👉 ♠ 一级标题 &…

第五章:C语言的数组

文章目录 1、数组的理解2、各类数组的定义3、变长数组4、字符数组 1、数组的理解 一维数组:比如定义一个int a[3];,那么可以将其看成两部分,a【3】为①,int为②。意思就是有一个数组名字为a,里面包含3个(池&#xff0…