1. DNS解析过程

1)、在浏览器中输入www.magedu.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
2)、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
3)、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
4)、如果要查询的域名,不由本地DNS服务器区域解析,但该DNS服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
5)、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(没有设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责 .com域的这台服务器。这台负责 .com域的服务器收到请求后,如果自己无法解析,它就会找一个管理 .com域的下一级DNS服务器地址(magedu.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找magedu.com域服务器,重复上面的动作进行查询,直至找到www.magedu.com主机。
6)、如果用的是转发模式(设置转发器),此DNS服务器就会把请求转发至上一级ISP DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
注:从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是迭代查询。

2. DNS扩展(本地DNS缓存)

Windows和Linux系统都会在本地缓存dns解析的记录,提高速度。但是,测试dns服务器的解析时,需要快速刷新(清除)本地的dns缓存,下面是linux和windows下如何快速刷新本地dns缓存记录的方法:

1)、Windows 客户端    
获得缓存中的DNS :

ipconfig /displaydns

强制清除DNS 缓存:

ipconfig /flushdns

也可以在服务器管理中重新启动DNS Client服务:

net stop dnscache

重启动DNS Client服务:

net start dnscache

2)、Linux 客户端    
开启本地DNS 缓存的服务

# chkconfig –list | grep nscd
nscd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭

该服务除了提供DNS 缓存外,还缓存/etc/passwd, /etc/groups 缓存,DB文件在/var/db/nscd下 ,还可提供 NIS 加速的作用。    
启动本地 DNS 缓存服务即可:

# service nscd start

反之

# service nscd stop

需要注意的是,在linux下没有强制清除DNS缓存的命令。但是,我们可以通过删除其后台数据库记录信息,达到清除DNS缓存的目的:

# rm /var/db/nscd/hosts
# service nscd restart

3)、Linux Bind 服务    
有时候,我们的客户端是处于某台 DNS 缓存服务器后面的。常见的情况是,作为 NAT 网关的 Linux 服务器,通过bind 服务,提供 DNS 缓存和转发功能。这可通过配置/etc/named.conf,加入forward来实现:

options {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
forward only;
forwarders {
8.8.8.8;
};
};

这时,客户端对外的 DNS 解析结果,除保留在客户端本地的 DNS 缓存中,同样会保留在这台网关服务器上。还有一种情况就是,当我们修改 named 提供的DNS服务时,也需要刷新缓存。  
bind 提供的 rndc 命令可以清空缓存的功能:

# rndc flush

转载于:https://blog.51cto.com/freeloda/1220398

DNS 解析过程详解相关推荐

  1. DNS解析过程详解【转】

    转自:http://blog.chinaunix.net/uid-28216282-id-3757849.html 先说一下DNS的几个基本概念: 一. 根域 就是所谓的".",其 ...

  2. DNS解析过程详解[转载]

    先说一下DNS的几个基本概念: 一. 根域 就是所谓的".",其实我们的网址www.baidu.com在配置当中应该是www.baidu.com.(最后有一点),一般我们在浏览器里 ...

  3. 安卓 linux init.rc,[原创]Android init.rc文件解析过程详解(二)

    Android init.rc文件解析过程详解(二) 3.parse_new_section代码如下: void parse_new_section(struct parse_state *state ...

  4. Android init.rc文件解析过程详解(三)

    Android init.rc文件解析过程详解(三) 三.相关结构体 1.listnode listnode结构体用于建立双向链表,这种结构广泛用于kernel代码中, android源代码中定义了l ...

  5. Android init.rc文件解析过程详解(二)

    Android init.rc文件解析过程详解(二) 3.parse_new_section代码如下: void parse_new_section(struct parse_state *state ...

  6. Android init.rc文件解析过程详解(一)

        Android init.rc文件解析过程详解(一) 一.init.rc文件结构介绍 init.rc文件基本组成单位是section, section分为三种类型,分别由三个关键字(所谓关键字 ...

  7. DNS原理及解析过程详解

    目录 1 域名系统概述 2 因特网的域名结构 3 域名服务器 4 域名的解析原理过程 4.1 DNS解析原理 4.2 域名解析过程 5 查询过程 5.1 演示整个查询过程 5.2 关于DNS解析的TT ...

  8. DNS原理总结及其解析过程详解

    一.域名系统 1.域名系统概述 域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址.域名系统其实就是名字系统.为什么不叫&quo ...

  9. 域名(DNS)原理及解析过程详解

    相信大家在平时工作中都离不开DNS解析,DNS解析是互联网访问的第一步,无论是使用笔记本浏览器访问网络还是打开手机APP的时候,访问网络资源的第一步必然要经过DNS解析流程.下面我们将详细的给大家讲解 ...

最新文章

  1. linux user 用户管理
  2. 指针都没搞懂,还能算得上 C++ 老司机?
  3. 一点一点看JDK源码(五)java.util.ArrayList 后篇之removeIf与Predicate
  4. Wo Cloud CentOS 挂载磁盘小计
  5. AndroidStudio_安卓原生开发_AsyncTask异步处理使用_AsyncTaskLoader---Android原生开发工作笔记139
  6. JAVA连接SQL server
  7. html______1
  8. CLR via C# 边读边想 01 - .NET 程序是如何运行起来的?
  9. 汤国安mooc实验数据_用漂亮的汤建立自己的数据集
  10. Python 之 异常检测/异常点搜索
  11. 第1章 数据库系统概论---数据库原理及应用
  12. 电脑调分辨率黑屏了怎么办_Win10调分辨率后出现黑屏提示“超出工作频率范围”怎么办...
  13. 浅谈网站导航设计经验
  14. 统一自定义idea和eclipse代码格式化和注释格式化总结
  15. 国际贸易术语解释通则(DAF 边境交货(……指定地点))
  16. Matplotlib中的plt和ax都是啥?
  17. python文件有几种类型、分别是什么_4. 内置类型
  18. W ndows主进程已停止,windows主进程rundll32已停止工作的四种解决方法介绍
  19. WebRTC 视频编解码类型的选择 VP8 H264 还是其他?(openh264编码,ffmpeg解码)
  20. 前端面试题HTTP总结(随缘更新)

热门文章

  1. 如何在Vue中添加百度统计代码?
  2. IDEA如何使用热部署方式启动项目?
  3. JSP自定义标签入门实例
  4. java ssm框架调用微信,微信小程序实现前后台交互(后台使用ssm框架)
  5. Spring Boot Lombok配置
  6. python open文件被另一个进程打开怎么办,在Windows上,如何打开一个已经被另一个进程打开进行写入的文件?...
  7. Python中的@classmethod修饰符
  8. php pdo总结,php 总结(10) PDO 连接数据库 预处理
  9. mysql存储过程迭代自己获取所有子孙
  10. npm 依赖下载报错 Hostname/IP does not match certificate‘s 相关 解决方案