看了一些相关文章,总感觉每篇文章在论述过程的时候都缺了些东西,要不就是没说清楚迭代查询和递归查询,要不就是没说缓存,要不就是缓存没说全。当然看了这么多文章,确实让我收获了很多知识,所以在自己的理解上,拾人牙慧,写一篇文章记录一下,如有错误,恳请批评指正~

什么是DNS?

DNS是一种按层次结构组织的分布式数据库系统,它由分布在全世界的成千上万个DNS服务器中的数据库组成。每个DNS的数据库中包含若干条资源记录,每条资源记录为其所管辖的区域中的DNS域名到某种数据(如IP地址)的映射,它提供主机名和IP地址之间的转换及有关电子邮件的选路信息。

DNS的作用

一句话概括:将域名解析为IP地址

DNS的查询方法

【递归查询】:DNS服务器代表请求客户端查询或联系其他DNS服务器,以便完全解析该域名,并将应答返回至客户端。

【迭代查询】:尝试联系其他的DNS服务器来解析名称,然后根据DNS服务器的应答,使用其他的独立查询。

以上,是比较官方的解释,比较抽象。


形象地来讲

递归查询就是:我让你去查找,你查找不到,你就去找其他人,我不管了。你只要把结果发给我就好了:要不找到了,要不找不到。这就是最终结果。

而迭代查询是:我让你去查找,如果你找到了就把结果给我,如果找不到,你告诉我下一步找谁,我再去向这个人去查找,直至查找到目标为止,或最终还是查找不到。


通过上面的分析,就能很好理解在DNS解析中是如何应用这两个查询的:

1. 主机向本地域名服务器的查询,属于递归查询,(主机就坐等结果返回了,只发一次请求,让本地域名服务器帮我做事吧~)

接下来本地域名服务器就开始工作了

2. 本地域名服务器向根域名服务器的查询,属于迭代查询。(每次都要本地域名服务器去请求,不懂的可以看看下面的解析过程,看看本地DNS服务器是不是超忙的!)

DNS的解析过程

1. 首先,主机在请求查询之前,先查找本地DNS缓存,有则返回给主机

2. 如果缓存中没有,则查看操作系统中有没有相关的映射记录(如host记录),有则返回,结束

3. 如果也没有,则主机向本地DNS服务器发送请求进行递归查询

4. 本地DNS服务器接收到请求后,查看自己的缓存记录,有则返回给主机

5. 如果没有,本地DNS服务器向根域名服务器发送查询请求

6. 根域名服务器返回给本地DNS服务器一个负责该区域的顶级域名服务器的IP

7. 本地DNS服务器根据这个IP,向顶级域名服务器去请求查询,如果有则返回给本地DNS服务器,本地DNS服务器再将内容返回给主机。

8. 如果没有,顶级域名服务器返回下一步应查询的权威服务器的IP

9. 本地DNS服务器根据这个IP,向权威域名服务器去请求查询,如果有则返回给本地DNS服务器,本地DNS服务器再将内容返回给主机。如果没有,代表查询不到

10. 本地DNS服务器就把查询结果记录在缓存区中,以供之后快速使用

以上过程中需要注意:

根域名服务器用来管理互联网的主目录,不存储域名,而是存储负责每个域的解析的域名服务器的地址信息,互联网上所有将域名转化为IP地址的请求,理论上都要经过根服务器。

DNS解析过程及工作原理相关推荐

  1. DNS解析过程及欺骗原理

    什么是DNS DNS即地址解析协议,域名系统以分布式数据库的形式将域名和IP地址相互映射. 解析过程: 假如我们要访问 www.baidu.com ,首先要向本地DNS服务器发出DNS请求,查询 ww ...

  2. CDN工作过程及工作原理

    CDN(Content Delivery Network)即内容分发网络,CDN的作用是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度.本文介绍CDN的工作 ...

  3. DNS解析过程中不得不知道的那些事

    DNS解析过程中不得不知道的那些事 0x01 定义 0x02 域名结构 0x03 DNS查询方式 1.从查询方式分类 2.从查询内容: 0x04 常见的DNS资源记录 1.A/AAAA记录 2.CNA ...

  4. DNS那些事——从浏览器输入域名开始分析DNS解析过程

    我们就从在浏览器输入域名开始分析. 文章目录 1. DNS服务器有哪些? 2. 从浏览器输入https://abc13.ban2.lcy0000.top/,DNS如何解析? 3. hosts文件是什么 ...

  5. K8S DNS解析过程和延迟问题

    一.Linux DNS查询解析原理(对于调用glibc库函数gethostbyname的程序) 我们在浏览器访问www.baidu.com这个域名,dns怎么查询到这台主机呢? 1.在浏览器中输入ww ...

  6. DNS 解析过程详解

    1. DNS解析过程 1).在浏览器中输入www.magedu.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析. 2).如果 ...

  7. 自举升压电路解析(电荷泵工作原理)

    图中自举升压电路解析(电荷泵工作原理): 1.上电时:电源+11V流过D1.D2向C3充电,C3上的电压很快升至接近11V: 2.如果Q6导通,C1负极被拉低,C1形成充电回路,会很快C1充电至11V ...

  8. Android DNS解析过程

    前言 一次排查接口404问题,引伸的Android DNS解析过程,简单分析总结一下 1.首先明白DNS解析流程 操作系统检查自身本地的hosts文件是否有这个网址的映射关系,如果有,直接返回完成域名 ...

  9. dns解析过程_DNS原理总结及其解析过程

    点击上方蓝色字体,关注我们 前言 域名系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库,使人更方便地访问互联网.DN ...

最新文章

  1. arc_loss训练手写数字分类
  2. LeetCode-数组-35. 搜索插入位置
  3. python_文件处理
  4. [Android] Android开发优化之——使用软引用和弱引用
  5. Altera之VIP TPG学习笔记
  6. 第三章:3.2  get 请求
  7. WebSocket + Spring消息推送服务的快速实现
  8. C语言一趟冒泡交换最小值,C语言单链表冒泡排序为啥以下代码实现不了?
  9. Android 自动扫描歌曲,Android扫描本地音乐文件开发案例分享
  10. mysql 5.6 没死_MySQL 5.6不删空用户的影响
  11. gcc oracle mysql_[转]Windows下用GCC连接MySQL数据库
  12. mysql查询时间提前五天_mysql选择月份查询该月有付款的数据(间隔x月并提前5天付款)...
  13. 【渝粤题库】 广东开放大学 劳动和社会保障法 形成性考核
  14. Super超图,GIS软件
  15. 爬梯:Docker全解析(二)
  16. Python学习第二章:变量和简单类型
  17. 扫荡倾斜摄影单体化难题
  18. Linux+conda+R+Rstudio下载安装环境全方面配置
  19. Gunicorn配置详解
  20. libusb使用指南

热门文章

  1. 成功解决numpy.ndarray size changed
  2. Robot Framework(三):RIDE工具简介
  3. Nginx证书配置:tomcat证书jks文件转nginx证书.cet和key文件
  4. CAD之设置坐标原点
  5. FFmpeg:‘UINT64_C‘ was not declared in ths scope
  6. Unity Loading转场学习笔记
  7. 美年旅游_自由行_编辑自由行
  8. 【Verilog】加法器减法器的设计
  9. 念整数(5分) 题目内容: 你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。 如输入1234,则输出: yi er san si 注
  10. c语言入门题目:输出两行短句