DNS查询过程与原理

news2024/11/25 0:46:01

目录

  • DNS
    • 1. DNS 是什么
    • 2. DNS 服务器
    • 3. 使用dig显示查询过程
    • 4. 域名的逐级查询
    • 5. 简述DNS解析www.baidu.com的过程
  • 参考

DNS

1. DNS 是什么

DNS (Domain Name System 的缩写)是域名解析器,根据域名查出IP地址


2. DNS 服务器

DNS 服务器是一种特殊的服务器,它运行 DNS 协议,用于解析域名到 IP 地址的映射关系。我们输入域名,浏览器就会在后台,自动向 DNS 服务器发出请求,获取对应的 IP 地址。这就是 DNS 查询。

DNS 服务器可以分为几种类型:

  1. 根 DNS 服务器
    • 这些服务器存储顶级域服务器的信息。
    • 它们构成了 DNS 系统的基础。
    • 所有域名的起点都是根域名,它写作一个点.,放在域名的结尾。因为这部分对于所有域名都是相同的,所以就省略不写了,比如example.com等同于example.com.(结尾多一个点)。
  2. 顶级域(TLD)服务器
    • .com, .org, .net 等服务器。
    • 它们存储二级域名的权威 DNS 服务器信息。
    • 根域名的下一级是顶级域名。
  3. 权威 DNS 服务器
    • 对应于具体域名的服务器。
    • 存储域名和 IP 地址之间的映射关系。
  4. 递归 DNS 服务器
    • 这些服务器负责递归地查询并返回最终的 IP 地址。
    • 通常是用户的 ISP 提供的 DNS 服务器。
    • 我们平常说的 DNS 服务器,一般都是指递归 DNS 服务器。它把 DNS 查询自动化了,只要向它查询就可以了。它内部有缓存,可以保存以前查询的结果,下次再有人查询,就直接返回缓存里面的结果。所以它能加快查询,减轻源头 DNS 服务器的负担。

3. 使用dig显示查询过程

工具软件dig可以显示整个查询过程。比如我们显示www.baidu.com这个域名的查询过程:

dig www.baidu.com

在这里插入图片描述

第一段是查询参数和统计:

在这里插入图片描述

第二段是查询内容:

在这里插入图片描述

  • 上面输出表示,查询域名www.baidu.comA记录,A是address的缩写。

第三段是DNS服务器的答复:

在这里插入图片描述

  • 上面结果显示,www.baidu.com有2个A记录,即2个IP地址,和1个CNAME记录
  • CNAME记录主要用于域名的内部跳转,为服务器配置提供灵活性,用户感知不到。也就是说用户查询www.baidu.com的时候,实际上返回的是www.a.shifen.com的IP地址。这样的好处是,变更服务器IP地址的时候,只要修改www.a.shifen.com这个域名就可以了,用户的fwww.baidu.com域名不用修改。

第四段是DNS服务器的一些传输信息:

在这里插入图片描述

  • 上面结果显示,本机的DNS服务器是192.168.30.2,查询端口是53(DNS服务器的默认端口)

如果不想看到这么多内容,可以使用+short参数:

在这里插入图片描述


4. 域名的逐级查询

要了解DNS 完整的查询过程,就必须了解 域名是一个树状结构。这种树状结构的意义在于,只有上级域名,才知道下一级域名的 IP 地址,所以需要逐级查询。

在这里插入图片描述

每一级域名都有自己的 DNS 服务器,存放下级域名的 IP 地址。

所以,如果想要查询二级域名 es6.ruanyifeng.com 的 IP 地址,需要三个步骤。

第一步,查询根域名服务器,获得顶级域名服务器.com(又称 TLD 服务器)的 IP 地址。

第二步,查询 TLD 服务器 .com,获得一级域名服务器 ruanyifeng.com 的 IP 地址。

第三步,查询一级域名服务器 ruanyifeng.com,获得二级域名 es6 的 IP 地址。

下面依次演示这三个步骤。

根域名服务器全世界一共有13台(都是服务器集群)。它们的域名和 IP 地址如下。

img

根域名服务器的 IP 地址是不变的,集成在操作系统里面。

操作系统会选其中一台,查询 TLD 服务器的 IP 地址。

dig @192.33.4.12 es6.ruanyifeng.com

上面示例中,我们选择192.33.4.12,向它发出查询,询问es6.ruanyifeng.com的 TLD 服务器的 IP 地址。

dig 命令的输出结果如下:

[root@server1 ~]# dig @192.33.4.12 es6.ruanyifeng.com

; <<>> DiG 9.11.36-RedHat-9.11.36-14.el8_10 <<>> @192.33.4.12 es6.ruanyifeng.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16169
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 27
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 8ede247a436d6ce60100000066b95ffb3e3d919c505717a5 (good)
;; QUESTION SECTION:
;es6.ruanyifeng.com. IN A

;; AUTHORITY SECTION:
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.

;; ADDITIONAL SECTION:
m.gtld-servers.net. 172800 IN A 192.55.83.30
l.gtld-servers.net. 172800 IN A 192.41.162.30
k.gtld-servers.net. 172800 IN A 192.52.178.30
j.gtld-servers.net. 172800 IN A 192.48.79.30
i.gtld-servers.net. 172800 IN A 192.43.172.30
h.gtld-servers.net. 172800 IN A 192.54.112.30
g.gtld-servers.net. 172800 IN A 192.42.93.30
f.gtld-servers.net. 172800 IN A 192.35.51.30
e.gtld-servers.net. 172800 IN A 192.12.94.30
d.gtld-servers.net. 172800 IN A 192.31.80.30
c.gtld-servers.net. 172800 IN A 192.26.92.30
b.gtld-servers.net. 172800 IN A 192.33.14.30
a.gtld-servers.net. 172800 IN A 192.5.6.30
m.gtld-servers.net. 172800 IN AAAA 2001:501:b1f9::30
l.gtld-servers.net. 172800 IN AAAA 2001:500:d937::30
k.gtld-servers.net. 172800 IN AAAA 2001:503:d2d::30
j.gtld-servers.net. 172800 IN AAAA 2001:502:7094::30
i.gtld-servers.net. 172800 IN AAAA 2001:503:39c1::30
h.gtld-servers.net. 172800 IN AAAA 2001:502:8cc::30
g.gtld-servers.net. 172800 IN AAAA 2001:503:eea3::30
f.gtld-servers.net. 172800 IN AAAA 2001:503:d414::30
e.gtld-servers.net. 172800 IN AAAA 2001:502:1ca1::30
d.gtld-servers.net. 172800 IN AAAA 2001:500:856e::30
c.gtld-servers.net. 172800 IN AAAA 2001:503:83eb::30
b.gtld-servers.net. 172800 IN AAAA 2001:503:231d::2:30
a.gtld-servers.net. 172800 IN AAAA 2001:503:a83e::2:30

;; Query time: 184 msec
;; SERVER: 192.33.4.12#53(192.33.4.12)
;; WHEN: Mon Aug 12 09:06:03 CST 2024
;; MSG SIZE rcvd: 874

  • 因为它给不了 es6.ruanyifeng.com 的 IP 地址,所以输出结果中没有 ANSWER SECTION,只有一个 AUTHORITY SECTION,给出了com.的13台 TLD 服务器的域名。

  • 下面还有一个 ADDITIONAL SECTION,给出了这13台 TLD 服务器的 IP 地址(包含 IPv4 和 IPv6 两个地址)。

有了 TLD 服务器的 IP 地址以后,我们再选一台接着查询:

dig @192.41.162.30 es6.ruanyifeng.com

上面示例中,192.41.162.30 是随便选的一台 .com 的 TLD 服务器,我们向它询问 es6.ruanyifeng.com 的 IP 地址。

返回结果如下。

; <<>> DiG 9.11.36-RedHat-9.11.36-14.el8_10 <<>> @192.41.162.30 es6.ruanyifeng.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30190
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 13
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;es6.ruanyifeng.com. IN A

;; AUTHORITY SECTION:
ruanyifeng.com. 172800 IN NS kara.ns.cloudflare.com.
ruanyifeng.com. 172800 IN NS norman.ns.cloudflare.com.

;; ADDITIONAL SECTION:
kara.ns.cloudflare.com. 172800 IN A 108.162.192.123
kara.ns.cloudflare.com. 172800 IN A 172.64.32.123
kara.ns.cloudflare.com. 172800 IN A 173.245.58.123
kara.ns.cloudflare.com. 172800 IN AAAA 2606:4700:50::adf5:3a7b
kara.ns.cloudflare.com. 172800 IN AAAA 2803:f800:50::6ca2:c07b
kara.ns.cloudflare.com. 172800 IN AAAA 2a06:98c1:50::ac40:207b
norman.ns.cloudflare.com. 172800 IN A 108.162.193.217
norman.ns.cloudflare.com. 172800 IN A 172.64.33.217
norman.ns.cloudflare.com. 172800 IN A 173.245.59.217
norman.ns.cloudflare.com. 172800 IN AAAA 2606:4700:58::adf5:3bd9
norman.ns.cloudflare.com. 172800 IN AAAA 2803:f800:50::6ca2:c1d9
norman.ns.cloudflare.com. 172800 IN AAAA 2a06:98c1:50::ac40:21d9

;; Query time: 311 msec
;; SERVER: 192.41.162.30#53(192.41.162.30)
;; WHEN: Mon Aug 12 09:17:58 CST 2024
;; MSG SIZE rcvd: 365

  • 它依然没有 ANSWER SECTION 的部分,只有 AUTHORITY SECTION,给出了一级域名 ruanyifeng.com 的两台 DNS 服务器。
  • 下面的 ADDITIONAL SECTION 就是这两台 DNS 服务器对应的 IP 地址。

第三步,再向一级域名的 DNS 服务器查询二级域名的 IP 地址。

dig @172.64.32.123 es6.ruanyifeng.com

返回结果如下。

; <<>> DiG 9.11.36-RedHat-9.11.36-14.el8_10 <<>> @172.64.32.123 es6.ruanyifeng.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29581
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;es6.ruanyifeng.com. IN A

;; ANSWER SECTION:
es6.ruanyifeng.com. 300 IN A 104.198.14.52

;; Query time: 855 msec
;; SERVER: 172.64.32.123#53(172.64.32.123)
;; WHEN: Mon Aug 12 09:20:38 CST 2024
;; MSG SIZE rcvd: 63

  • 这次终于有了 ANSWER SECTION,得到了最终的二级域名的 IP 地址。

至此,三个步骤的 DNS 查询全部完成。


5. 简述DNS解析www.baidu.com的过程

  1. 客户端查询
    • 用户在浏览器中输入 www.baidu.com
    • 浏览器首先检查本地缓存中是否有该域名对应的 IP 地址记录。
    • 如果缓存中没有找到记录,则浏览器向本地 DNS 服务器发送查询请求。
  2. 本地 DNS 服务器查询
    • 本地 DNS 服务器收到查询后,先检查自己的缓存中是否有记录。
    • 如果缓存中没有记录,则向根 DNS 服务器发起查询。
  3. 根 DNS 服务器查询
    • 根 DNS 服务器不保存具体的域名和 IP 地址映射,而是知道顶级域(TLD)服务器的位置。
    • 根 DNS 服务器返回 .com 顶级域服务器的信息。
  4. 顶级域(TLD)服务器查询
    • 顶级域服务器 .com 接收到查询后,返回 baidu.com 的权威 DNS 服务器的信息。
  5. 权威 DNS 服务器查询
    • 权威 DNS 服务器 baidu.com 接收到查询后,返回 www.baidu.com 的 A 记录(IPv4 地址)或 AAAA 记录(IPv6 地址)。
  6. 响应客户端
    • 权威 DNS 服务器将结果返回给本地 DNS 服务器。
    • 本地 DNS 服务器将结果返回给客户端浏览器,并将结果缓存起来以备后续查询。

注意事项:

  • 缓存:DNS 查询的结果会被本地 DNS 服务器和其他中间服务器缓存一段时间,以减少未来的查询次数。
  • 递归查询:本地 DNS 服务器通常执行递归查询,这意味着它会负责完成整个查询过程并返回结果给客户端。
  • 迭代查询:在查询过程中,DNS 服务器之间的查询通常是迭代的,即每次查询只返回下一步的地址,直到找到权威 DNS 服务器为止。

参考

https://www.ruanyifeng.com/blog/2022/08/dns-query.html

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

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

相关文章

Leon黎明广州演唱会2024重磅官宣,10月26日倾情开唱!

径自奔流的时光中&#xff0c;总有些声音拥有超越时间的力量&#xff0c;弥合着世代更迭的图景&#xff0c;在一代又一代人的心中闪烁不息。在熠熠生辉的星河中&#xff0c;垂钓破晓时分的曙光&#xff0c;总有星辰会指引着我们相遇。 当千禧年的风吹过耳畔&#xff0c;记忆深…

在 ToolStrip 控件中使用工具提示

可以通过将控件的 ShowItemToolTips 属性设置为 true 来为所需的 ToolStrip 控件显示 ToolTip。 显示工具提示 将控件的 ShowItemToolTips 属性设置为 true。 ToolStrip.ShowItemToolTips 的默认值为 true&#xff0c;MenuStrip.ShowItemToolTips 和 StatusStrip.ShowItemTool…

基于HTML语言的环保网站的设计与实现

TOC springboot318基于HTML语言的环保网站的设计与实现 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&a…

如何选择有意义的B2B SEO关键词?

今天谈谈如何选择有意义的B2B SEO关键字目标&#xff0c;以及你可以在自己的关键字研究中采取的流程和步骤。B2B和我们通常看到的B2C营销类型有点不同。销售周期或实际做出购买决定所需的时间通常要长得多&#xff0c;这需要多个利益相关者的参与。个人将参与这个过程&#xff…

Redis远程字典服务器(4)—— string类型详解

目录 一&#xff0c;string基本情况 二&#xff0c;string命令详解 2.1 set命令选项 2.2 setnx&#xff0c;setex 2.3 incr&#xff0c;incrby 2.4 decr&#xff0c;decrby 2.5 append拼接 2.6 getrange获取 2.7 setrange修改 2.8 strlen获取长度 2.9 总结 三&…

迈威通信Wi-Fi无线交换机:让工业网络打破线缆束缚

随着《中国制造2025》等国家政策的推进&#xff0c;我国正在加速推动制造业向智能化和信息化转型升级。在这一背景下&#xff0c;工业互联网作为支撑智能制造的关键基础设施&#xff0c;其重要性愈发凸显。特别是在“万物互联”的今天&#xff0c;Wi-Fi不仅成为了日常生活的重要…

VIM 包,集成多种算法的数据缺失值处理工具!

生信碱移 VIM 缺失值处理 在组学分析中&#xff0c;尤其是在公开数据库的挖掘中&#xff0c;数据缺失是一个常见问题&#xff0c;这可能是由于样本处理、测量误差或技术限制等多种原因引起。例如&#xff0c;在转录组学研究中&#xff0c;某些基因的表达数据可能因实验失败而…

我主编的电子技术实验手册(15)——测量正弦信号

本专栏是笔者主编教材&#xff08;图0所示&#xff09;的电子版&#xff0c;依托简易的元器件和仪表安排了30多个实验&#xff0c;主要面向经费不太充足的中高职院校。每个实验都安排了必不可少的【预习知识】&#xff0c;精心设计的【实验步骤】&#xff0c;全面丰富的【思考习…

Qt (5)【Qt 的 qrc 机制高效管理项目静态资源】

阅读导航 引言一、qrc机制简介二、创建qrc机制并使用1. 创建⼀个qrc文件2. 添加已有资源3. 使用已加载资源 三、qrc机制的优缺点 引言 在上一篇文章中&#xff0c;我们深入探讨了QWidget作为Qt GUI框架中核心基类的重要性&#xff0c;以及它如何承载了构建丰富用户界面所需的各…

“传统”父母用手机 VS “时髦”父母玩手机

“传统”父母日常用智能手机&#xff0c;经常有些“拦路虎”&#xff0c;让他们在接触新事物的时候&#xff0c;如果搞不定就干脆不用了。现在也涌现出来很多“时髦”父母&#xff0c;能游刃有余的使用智能手机&#xff0c;如何让长辈在使用手机时更有松弛感&#xff0c;今天带…

Mapreduce_partition分区入门

分区 将输入的csv按照员工号拆分成每个员工&#xff0c;每个员工存储为员工对象&#xff0c;之后按每个员工的不同部门存储 pom <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:x…

力扣热题100_回溯_17_电话号码的字母组合

文章目录 题目链接解题思路解题代码 题目链接 17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示…

力扣面试经典算法150题:删除有序数组中的重复项 II

删除有序数组中的重复项 II 今天的题目是力扣面试经典150题中的数组的中等难度题: 删除有序数组中的重复项 II 题目链接&#xff1a;https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/description/?envTypestudy-plan-v2&envIdtop-interview-150 …

Linux中yum、vim、gcc/g++的使用

目录 一、Linux 软件包管理器 yum 什么是软件包 关于 rzsz 查看软件包★ 如何安装软件★ 如何卸载软件★ Linux 开发工具 二、Linux编译器-vim使用 vim的基本概念 vim的基本操作 vim正常模式命令集 vim末行模式命令集 vim操作总结 如果在vim界面不小心按了Ctrl …

【Redis集群】集群原理最全解析

主从集群 单节点Redis的并发能力是有上限的&#xff0c;要进一步提高Redis的并发能力&#xff0c;就需要搭建主从集群&#xff0c;实现读写分离。 数据同步概念 Replication Id和offset 在从节点发起数据同步的请求中&#xff0c;有两个重要的属性&#xff1a; Replication…

灵办AI探索之旅:颠覆传统的代码开发工具

前言 灵办AI是一个先进的人工智能工具&#xff0c;专注于提高软件开发和项目管理的效率。其核心功能包括代码生成、优化、评估和自动化修复&#xff0c;旨在帮助开发者和团队提升开发速度和代码质量。 体验地址&#xff1a;https://ilingban.com/browser_extension/?fromjj …

管道的学习

信号量&#xff1a;线程间有顺序的协调工作&#xff1b;&#xff08;用来描述可使用的资源个数&#xff09;&#xff1b; 信号量的个数反应的是资源的数量&#xff1b; 写线程 ---写资源 可以写数据的条件 1.开始时 &#xff0c;buf空的 2.读线程 读完了 读线程 buf充当读资源…

Particle Swarm Optimization粒子群算法

目录 1.粒子群算法入门 1.1 简单的优化问题 1.1.1 盲目搜索 1.1.2 粒子群算法流程图 1.1.3 粒子群算法的核心公式 1.1.4 预设参数 1.1.5 初始化粒子的位置和速度 1.1.6 计算适应度 1.1.7 循环体&#xff1a;更新粒子速度和位置 1.1.8 模型改进 2.深入研究粒子群算法 …

开办无人机培训机构,前期需要投入多少?

开办无人机培训机构的前期投入因多种因素而异&#xff0c;主要包括场地租赁、设备购置、师资薪酬、教学材料与课程开发、宣传推广、行政和运营费用&#xff0c;以及资质认证和审批费用等。以下是对这些费用的大致估算&#xff1a; 1. 场地租赁 费用范围&#xff1a;根据所在地…

“论NoSQL数据库技术及其应用”写作框架,软考高级,系统架构设计师

论文真题 随着互联网web2.0网站的兴起&#xff0c;传统关系数据库在应对web2.0 网站&#xff0c;特别是超大规模和高并发的web2.0纯动态SNS网站上已经显得力不从心&#xff0c;暴露了很多难以克服的问题&#xff0c;而非关系型的数据库则由于其本身的特点得到了非常迅速的发展…