什么是DNS?
什么是DNS
域名系统(DNS)是因特网的电话簿。人类通过域名在线访问信息,如nytimes.com或espn.com。Web浏览器通过Internet协议(IP)地址进行交互。DNS将域名转换为IP地址,以便浏览器可以加载Internet资源。
连接到Internet的每个设备都有一个唯一的IP地址,其他计算机可以使用该IP地址来查找设备。DNS服务器无需人类记忆IP地址,如192.168.1.1(在IPv4中),或更复杂的新字母数字IP地址,如2400:cb00:2048:1 :: c629:d7a2(在IPv6中)。
DNS如何工作?
DNS解析过程涉及将主机名(例如www.example.com)转换为计算机友好的IP地址(例如192.168.1.1)。Internet上的每个设备都会获得一个IP地址,该地址是查找相应Internet设备所必需的 - 就像使用街道地址查找特定的家庭一样。当用户想要加载网页时,必须在用户键入其Web浏览(example.com)和找到example.com网页所需的机器友好地址之间进行翻译。
为了理解DNS解析背后的过程,了解DNS查询必须在其间传递的不同硬件组件非常重要。对于Web浏览器,DNS查找“在幕后”发生,除了初始请求之外,不需要来自用户计算机的交互。
加载网页涉及4个DNS服务器:
- DNS recursor - recursor可以被认为是一个图书管理员,被要求在图书馆的某个地方找到一本特定的书。DNS recursor是一个服务器,旨在通过Web浏览器等应用程序从客户端计算机接收查询。通常,recursor负责发出其他请求以满足客户端的DNS查询。
- 根名称服务器 - 根服务器是将人类可读主机名转换(解析)为IP地址的第一步。它可以被认为是图书馆中指向不同书籍书籍的索引 - 通常它可以作为对其他更具体位置的参考。
- TLD名称服务器 - 顶级域名服务器(TLD)可以被视为库中特定的书架。此名称服务器是搜索特定IP地址的下一步,它托管主机名的最后一部分(在example.com中,TLD服务器是“com”)。
- 权威名称服务器 - 这个最终名称服务器可以被认为是书架上的字典,其中可以将特定名称翻译成其定义。权威名称服务器是名称服务器查询中的最后一站。如果权威名称服务器可以访问所请求的记录,它将把请求的主机名的IP地址返回给发出初始请求的DNS Recursor(图书管理员)。

权威DNS服务器和递归DNS解析器之间有什么区别?
这两个概念都指的是与DNS基础结构不可分割的服务器(服务器组),但每个服务器执行不同的角色并且位于DNS查询管道内的不同位置。考虑差异的一种方法是递归解析器位于DNS查询的开头,而权威的名称服务器位于最后。

递归DNS解析器
递归解析器是响应来自客户端的递归请求并花时间跟踪DNS记录的计算机。它通过发出一系列请求直到它到达请求记录的权威DNS名称服务器(或者如果没有找到记录则超时或返回错误)来完成此操作。幸运的是,递归DNS解析器并不总是需要发出多个请求才能跟踪响应客户端所需的记录; 缓存是一种数据持久性过程,它通过在DNS查找中提前提供请求的资源记录来帮助缩短必要的请求。
权威DNS服务器
简而言之,权威DNS服务器是实际持有并负责DNS资源记录的服务器。这是DNS查找链底部的服务器,它将使用查询的资源记录进行响应,最终允许Web浏览器发出请求以访问访问网站或其他Web资源所需的IP地址。权威的名称服务器可以满足来自其自身数据的查询,而无需查询其他来源,因为它是某些DNS记录的最终真实来源。

值得一提的是,在查询针对子域(如foo.example.com或blog.cloudflare.com)的情况下,将在权威名称服务器之后添加一个额外的名称服务器,该名称服务器负责存储子域的CNAME记录。

许多DNS服务与Cloudflare提供的服务之间存在关键差异。不同的DNS递归解析器(如Google DNS,OpenDNS和Comcast等提供商)都维护DNS递归解析器的数据中心安装。这些解析器允许通过优化的DNS优化计算机系统集群进行快速简便的查询,但它们与Cloudflare托管的名称服务器根本不同。
Cloudflare维护基础设施级名称服务器,这些服务器是Internet功能不可或缺的一部分。一个关键的例子是远程服务器网络,Cloudflare部分负责托管。F根是负责每天数十亿Internet请求的根级DNS名称服务器基础结构组件之一。我们的Anycast网络使我们处于一个独特的位置,可以在不中断服务的情况下处理大量DNS流量。
DNS查找的步骤是什么?
在大多数情况下,DNS涉及将域名转换为适当的IP地址。要了解此过程的工作原理,有助于在从Web浏览器到DNS查找过程再次返回时遵循DNS查找的路径。我们来看看这些步骤。
注意:DNS查找信息通常会在查询计算机内部缓存或在DNS基础结构中远程缓存。DNS查找通常有8个步骤。缓存DNS信息时,将从DNS查找过程中跳过步骤,这样可以更快地完成。下面的示例概述了没有缓存任何内容时的所有8个步骤。
DNS查找中的8个步骤:
- 用户在Web浏览器中键入“example.com”,查询将进入Internet并由DNS递归解析程序接收。
- 解析器然后查询DNS根名称服务器(。)。
- 然后,根服务器使用顶级域(TLD)DNS服务器(例如.com或.net)的地址响应解析器,该服务器存储其域的信息。在搜索example.com时,我们的请求指向.com TLD。
- 解析器然后向.com TLD提出请求。
- 然后,TLD服务器使用域名服务器example.com的IP地址进行响应。
- 最后,递归解析器向域的名称服务器发送查询。
- 然后,example.com的IP地址将从名称服务器返回到解析程序。
- 然后DNS解析器使用最初请求的域的IP地址响应Web浏览器。
一旦DNS查找的8个步骤返回了example.com的IP地址,浏览器就能够发出对网页的请求:
- 浏览器向IP地址发出HTTP请求。
- 该IP处的服务器返回要在浏览器中呈现的网页(步骤10)。
什么是DNS解析器?
DNS解析器是DNS查找中的第一站,它负责处理发出初始请求的客户端。解析器启动查询序列,最终导致URL被转换为必要的IP地址。
注意:典型的未缓存DNS查找将涉及递归和迭代查询。
区分递归DNS查询和递归DNS解析器很重要。查询是指对需要解析查询的DNS解析器发出的请求。DNS递归解析器是接受递归查询并通过发出必要请求来处理响应的计算机。

DNS查询的类型有哪些?
在典型的DNS查找中,会发生三种类型的查询。通过使用这些查询的组合,用于DNS解析的优化过程可以导致行进距离的减少。在理想情况下,缓存记录数据将可用,允许DNS名称服务器返回非递归查询。
3种类型的DNS查询:
- 递归查询 - 在递归查询中,DNS客户端要求DNS服务器(通常是DNS递归解析程序)将使用请求的资源记录响应客户端,或者如果解析程序无法找到记录,则会响应错误消息。
- 迭代查询 - 在这种情况下,DNS客户端将允许DNS服务器返回它可以的最佳答案。如果查询的DNS服务器与查询名称不匹配,则它将返回对域名称空间的较低级别具有权威性的DNS服务器的引用。然后,DNS客户端将对引用地址进行查询。此过程将继续使用查询链中的其他DNS服务器,直到发生错误或超时。
- 非递归查询 - 通常在DNS解析器客户端向DNS服务器查询其有权访问的记录时会发生这种情况,因为它对记录具有权威性,或者记录存在于其缓存中。通常,DNS服务器将缓存DNS记录以防止额外的带宽消耗和上游服务器的负载。
什么是DNS缓存?DNS缓存在哪里发生?
缓存的目的是将数据临时存储在一个位置,从而提高数据请求的性能和可靠性。DNS缓存涉及将数据存储在更靠近请求客户端的位置,以便可以更早地解析DNS查询,并且可以避免在DNS查找链中进一步查询,从而改善加载时间并减少带宽/ CPU消耗。DNS数据可以缓存在各种位置,每个位置将存储DNS记录一段时间,该时间由生存时间(TTL)决定。
浏览器DNS缓存
默认情况下,现代Web浏览器设计为在一段时间内缓存DNS记录。这里的目的很明显; DNS缓存越接近Web浏览器,为了检查缓存并对IP地址发出正确的请求,必须采取的处理步骤越少。当请求DNS记录时,浏览器缓存是为请求的记录检查的第一个位置。
在chrome中,您可以转到chrome:// net-internals / #dns查看DNS缓存的状态。
操作系统(OS)级DNS缓存
操作系统级DNS解析程序是DNS查询离开计算机之前的第二个也是最后一个本地停止。设计用于处理此查询的操作系统内部的进程通常称为“存根解析程序”或DNS客户端。当存根解析器从应用程序获取请求时,它首先检查自己的缓存以查看它是否具有该记录。如果没有,则它将本地网络外部的DNS查询(带有递归标志集)发送到Internet服务提供商(ISP)内的DNS递归解析器。
递归解析器DNS缓存
当ISP内部的递归解析器收到DNS查询时,如同之前的所有步骤一样,它还将检查所请求的主机到IP地址转换是否已存储在其本地持久层内。
递归解析器还具有其他功能,具体取决于它在缓存中的记录类型:
- 如果解析程序没有A记录,但确实拥有权威名称服务器的NS记录,它将直接查询这些名称服务器,绕过DNS查询中的几个步骤。此快捷方式可防止从root和.com名称服务器(在我们的example.com搜索中)中进行查找,并有助于更快地解析DNS查询。
- 如果解析器没有NS记录,它将向TLD服务器发送查询(在我们的例子中为.com),跳过根服务器。
- 万一解析器没有指向TLD服务器的记录,它将查询根服务器。此事件通常在清除DNS缓存后发生。
什么是DNS?的更多相关文章
- 6.DNS公司PC访问外网的设置 + 主DNS服务器和辅助DNS服务器的配置
网站部署之~Windows Server | 本地部署 http://www.cnblogs.com/dunitian/p/4822808.html#iis DNS服务器部署不清楚的可以看上一篇:ht ...
- Liunx下配置DNS服务
当Ping 主机名时可以映射出该主机的IP地址,反之亦然.配置并指定DNS服务器可以快速部署集群,不需要每台主机都去修改HOSTS文件即可实现IP与主机名的相互解析.而在Linux下的DNS是用bin ...
- ★Kali信息收集~4.DNS系列
★.1host:DNS信息 参数: 一般情况下,host查找的是A,AAAA,和MX的记录 案例: DNS服务器查询 host -t ns 域名 A记录和MX记录查询 host 域名(host - ...
- Node.js:DNS模块的使用
Nodejs的DNS模块包涵有关DNS查询和操作的方法,下面介绍该模块的基本用法以及实现一个DNS查询小工具. 1.获取DNS服务器地址 使用getServers方法,该方法返回一个IP地址组成的数组 ...
- Java DNS查询内部实现
源码分析 在Java中,DNS相关的操作都是通过通过InetAddress提供的API实现的.比如查询域名对应的IP地址: String dottedQuadIpAddress = InetAddre ...
- DNS报文格式(RFC1035)
一.域名和资源记录的定义 1.Name space definitions 2.资源记录定义(RR definitions) 2.1 格式 后面分析报文的时候详细解释. ...
- DNS原理及其解析过程 精彩剖析
本文章转自下面:http://369369.blog.51cto.com/319630/812889 DNS原理及其解析过程 精彩剖析 网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址 ...
- CentOS7 查看IP、Gateway、DNS、Hostname
1.查看IP# ip addr 2.查看路由# ip route 3.查看DNS# cat /etc/resolv.conf 4.查看主机名# hostname
- linux查看本机IP、gateway、DNS
IP: ifconfig gateway:[root@localhost ~]# netstat -rnKernel IP routing tableDestination Gatew ...
- Centos6.2设置静态ip和dns
参考了如下文章:https://gist.github.com/fernandoaleman/2172388http://www.lifelinux.com/how-to-configure-stat ...
随机推荐
- 新版mysql的配置文件my.ini位置
在网上的博客上找了好久的my.ini,一直找不到.最后发现原来新版本的mysql已经不把my.ini放在原始的安装目录了.而是放在了C:/ProgramData下.
- Image Processing and Analysis_15_Image Registration:A survey of medical image registration——1998
此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...
- python 制作影视动画、电影特效工具
一直觉得电影特效,动画制作这些都很什么,在google上搜索了下python开发电影特效的内容,发现了几个不错的软件,都支持python脚本开发. Houdini Houdini (电影特效魔术师) ...
- Linux Backup: Hard Disk Clone with "dd"
Most of Windows users may know "Norton Ghost". Norton Ghost is a backup software for har ...
- 如何使用Metasploit进行汽车安全性测试
前言 针对汽车的攻击和入侵是当前最前沿的领域和最热门的话题之一.随着自动驾驶汽车技术的发展,在未来这个领域将变得更加重要.作为汽车黑客快速发展的一部分,我最喜欢的黑客工具之一Metasploit也开发 ...
- Linux学习之八-配置FTP连接Linux服务器
配置ftp连接Linux服务器 通过配置ftp服务器,可以实现局域网内共享文件,甚至不同用户具有不同权限,需要的工具有Windows平台ftp客户端FileZilla(免费开源) 下载地址:https ...
- django 新项目
1.创建虚拟环境 mkvirtualenv - p python3 2.pycharm : 在pycharm中新建项目, 取名.添加虚拟机上的虚拟环境
- No PostCSS Config found in报错解决
前情提要]日前本人将本地项目上传GitHub之后,然后再clone到本地,运行是报错:Error: No PostCSS Config found in... 项目在本地打包运行的时候不报错,上传到 ...
- 前端笔记-html
前端笔记html 前端三大利器,html(本源),css(着装),js(动作) html 学习html就是学习一套规则能够被浏览器识别,在页面中展示,一个页面只能运行一个html 标签 <> ...
- Hibernate初探之单表映射——创建持久化类
编写第一个Hibernate例子 第二步:创建持久化类(持久化类的设计原则要遵循javabeans的设计原则) javabeans的设计原则: 1.公有的类2.提供公有的不带参数的默认的构造方法3.属 ...