什么是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个步骤:

  1. 用户在Web浏览器中键入“example.com”,查询将进入Internet并由DNS递归解析程序接收。
  2. 解析器然后查询DNS根名称服务器(。)。
  3. 然后,根服务器使用顶级域(TLD)DNS服务器(例如.com或.net)的地址响应解析器,该服务器存储其域的信息。在搜索example.com时,我们的请求指向.com TLD。
  4. 解析器然后向.com TLD提出请求。
  5. 然后,TLD服务器使用域名服务器example.com的IP地址进行响应。
  6. 最后,递归解析器向域的名称服务器发送查询。
  7. 然后,example.com的IP地址将从名称服务器返回到解析程序。
  8. 然后DNS解析器使用最初请求的域的IP地址响应Web浏览器。

一旦DNS查找的8个步骤返回了example.com的IP地址,浏览器就能够发出对网页的请求:

  1. 浏览器向IP地址发出HTTP请求。
  2. 该IP处的服务器返回要在浏览器中呈现的网页(步骤10)。

什么是DNS解析器?

DNS解析器是DNS查找中的第一站,它负责处理发出初始请求的客户端。解析器启动查询序列,最终导致URL被转换为必要的IP地址。

注意:典型的未缓存DNS查找将涉及递归和迭代查询。

区分递归DNS查询和递归DNS解析器很重要。查询是指对需要解析查询的DNS解析器发出的请求。DNS递归解析器是接受递归查询并通过发出必要请求来处理响应的计算机。

DNS查询的类型有哪些?

在典型的DNS查找中,会发生三种类型的查询。通过使用这些查询的组合,用于DNS解析的优化过程可以导致行进距离的减少。在理想情况下,缓存记录数据将可用,允许DNS名称服务器返回非递归查询。

3种类型的DNS查询:

  1. 递归查询 - 在递归查询中,DNS客户端要求DNS服务器(通常是DNS递归解析程序)将使用请求的资源记录响应客户端,或者如果解析程序无法找到记录,则会响应错误消息。
  2. 迭代查询 - 在这种情况下,DNS客户端将允许DNS服务器返回它可以的最佳答案。如果查询的DNS服务器与查询名称不匹配,则它将返回对域名称空间的较低级别具有权威性的DNS服务器的引用。然后,DNS客户端将对引用地址进行查询。此过程将继续使用查询链中的其他DNS服务器,直到发生错误或超时。
  3. 非递归查询 - 通常在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地址转换是否已存储在其本地持久层内。

递归解析器还具有其他功能,具体取决于它在缓存中的记录类型:

  1. 如果解析程序没有A记录,但确实拥有权威名称服务器的NS记录,它将直接查询这些名称服务器,绕过DNS查询中的几个步骤。此快捷方式可防止从root和.com名称服务器(在我们的example.com搜索中)中进行查找,并有助于更快地解析DNS查询。
  2. 如果解析器没有NS记录,它将向TLD服务器发送查询(在我们的例子中为.com),跳过根服务器。
  3. 万一解析器没有指向TLD服务器的记录,它将查询根服务器。此事件通常在清除DNS缓存后发生。

什么是DNS?的更多相关文章

  1. 6.DNS公司PC访问外网的设置 + 主DNS服务器和辅助DNS服务器的配置

    网站部署之~Windows Server | 本地部署 http://www.cnblogs.com/dunitian/p/4822808.html#iis DNS服务器部署不清楚的可以看上一篇:ht ...

  2. Liunx下配置DNS服务

    当Ping 主机名时可以映射出该主机的IP地址,反之亦然.配置并指定DNS服务器可以快速部署集群,不需要每台主机都去修改HOSTS文件即可实现IP与主机名的相互解析.而在Linux下的DNS是用bin ...

  3. ★Kali信息收集~4.DNS系列

    ★.1host:DNS信息 参数: 一般情况下,host查找的是A,AAAA,和MX的记录 案例: DNS服务器查询  host -t ns 域名 A记录和MX记录查询  host 域名(host - ...

  4. Node.js:DNS模块的使用

    Nodejs的DNS模块包涵有关DNS查询和操作的方法,下面介绍该模块的基本用法以及实现一个DNS查询小工具. 1.获取DNS服务器地址 使用getServers方法,该方法返回一个IP地址组成的数组 ...

  5. Java DNS查询内部实现

    源码分析 在Java中,DNS相关的操作都是通过通过InetAddress提供的API实现的.比如查询域名对应的IP地址: String dottedQuadIpAddress = InetAddre ...

  6. DNS报文格式(RFC1035)

    一.域名和资源记录的定义 1.Name space definitions 2.资源记录定义(RR definitions)      2.1 格式          后面分析报文的时候详细解释.   ...

  7. DNS原理及其解析过程 精彩剖析

    本文章转自下面:http://369369.blog.51cto.com/319630/812889 DNS原理及其解析过程 精彩剖析 网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址 ...

  8. CentOS7 查看IP、Gateway、DNS、Hostname

    1.查看IP# ip addr 2.查看路由# ip route 3.查看DNS# cat /etc/resolv.conf 4.查看主机名# hostname

  9. linux查看本机IP、gateway、DNS

    IP:     ifconfig gateway:[root@localhost ~]# netstat -rnKernel IP routing tableDestination     Gatew ...

  10. Centos6.2设置静态ip和dns

    参考了如下文章:https://gist.github.com/fernandoaleman/2172388http://www.lifelinux.com/how-to-configure-stat ...

随机推荐

  1. Image Processing and Analysis_15_Image Registration:Multi-modal volume registration by maximization of mutual information——1996

    此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...

  2. maven jar 包不在项目中

    maven  update project maven build

  3. Linux教程 网络管理命令Netstat的使用

    Netstat(network statistics) 网络统计命令是一个命令行工具,用于监视网络出入的连接,路由表以接口统计等.Netstat 在所有的Unix或者Linux系统,Windows系统 ...

  4. 透过字节码生成审视Java动态代理运作机制

    对于动态代理我想应该大家都不陌生,就是可以动态去代理实现某个接口的类来干一些我们自己想要的功能,但是在字节码层面它的表现是如何的呢?既然目前刚好在研究字节码相关的东东,有必要对其从字节码角度来审视一下 ...

  5. ios滑动回弹效果导致的穿透问题

    1 给样式中去除掉下面的css样式 -webkit-overflow-scrolling:touch;/* 当手指从触摸屏上移开,会保持一段时间的滚动 */ -webkit-overflow-scro ...

  6. Nginx防盗链模块ngx_http_referer_module

    ngx_http_referer_module⽤用来阻⽌止Referer⾸首部⽆无有效值的请求访问,可防⽌止盗链指令:12.1 valid_referers定义 referer ⾸首部的合法可⽤用值, ...

  7. 下载apache旗下Web服务器软件

    apache官方网站:http://www.apache.org/ 1.百度搜索apache找到apache官网 2.进入apache官网打开旗下web服务器软件列表 3.进入apache旗下web服 ...

  8. python MySQL安装依赖报错的坑

    0X01 问题 MySQL-python是python调用MySQL的常用库 通常安装时会遇到某些坑. EnvironmentError: mysql_config not found yum -y ...

  9. python文件操作知识点总结:写入篇

    文件写入: 文中的两个变量:f 和 f1(截图时被该死的灯泡遮挡住了) 被称作文件对象 或文件句柄(重口味的叫法,感觉很C++,句子又不是刀子,怎么还带柄?) 以逗号为界,open()方法所依赖的3个 ...

  10. Noip2014 提高组 Day1 T1 生活大爆炸版石头剪刀布 + Day2 T1 无线网络发射器选址

    Day1 T1 题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一样,则不分胜负.在<生活大爆炸>第二季第8 集中出现了一种石头剪刀布的升级版游戏. 升 ...