较为详细的DNS介绍

200 阅读11分钟

原文来自:

what is dns

what is a domain name

域名是什么?

域名是映射到字母数字IP地址的文本字符串, 用户客户端软件访问网站。用简朴的话说: 域名是用户在浏览器窗口中键入以访问特定网站的文本字符串。例如: Google网站的域名是 google.com

网站的实际地址是一个复杂的数字IP地址(例如192.0.2.2), 但是借助DNS, 用户可以输入人类友好的域名并被路由到他们正在寻找的网站。此过程称为DNS查找。

谁管理着域名?

域名均由域名管理机构管理, 域名注册机构将域名的保留委托给注册服务商。目前已注册的域名超过3亿个。

域名和URL有什么区别?

统一资源定位符(URL), 有时称为网址, 包含站点的域名以及其他信息, 包括协议和路径。例如, 在URL为http://cloudflare.com/learning/中, cloudflare.com是域名, https是协议, /learning/是指向特定页面的路径网站。

域名由哪几部分组成?

域名通常分为两部分或三部分, 每个部分用(.)分割。从右向左阅读时, 域名中的标识符从最通用到最具体。域名中最后一个点右侧的部分是顶级域名TLD(Top Level Domain)。通用的顶级域名,例如.com和.net,以及特定国家地区,例如.jp和.cn。

TLD左侧是二级域名(2LD), 如果2LD左侧有任何内容, 则称为三级域名(3LD)。

对于Google的美国域名“google.com”:

  • .com是TLD(最通用的)
  • google是2LD(最具体的)

但是对于Google UK域名“google.co.uk”:

  • .uk是TLD(最通用的)
  • .co是2LD
  • google是3LD(最具体的)

DNS是什么?

DNS(Domain Names System)域名系统是互联网的电话簿。 人们通过域名在线访问信息,例如google.com。Web浏览器通过Internet协议(IP)地址进行交互。DNS将域转换为IP地址 以便浏览器可以加载Internet资源。

连接到互联网的每台设备都有一个唯一的IP地址, 其他机器使用该地址来查找该设备。DNS消除了人类记忆IP地址(例如192.168.1.1(在IPv4中)或2400:cb00:2048:1::c629:d7a2(在IPv6中))

DNS如何工作的?

DNS解析过程涉及主机名(例如www.google.com)转换为计算机友好的IP地址(例如192.168.1.1)。互联网上的每个设备都有一个IP地址, 并且该地址对于查找适当的互联网设备是必要的。对于Web浏览器, DNS查找发生在“幕后”, 除了初始请求之外, 不需要与用户计算机进行任何交互。

加载网页涉及到4个DNS服务器

  1. DNS递归器: 递归器可以被视为图书管理员, 他被要求去图书馆的某个地方查找特定的书籍。DNS递归器是一种服务器, 旨在通过Web浏览器等应用程序接受来自客户端计算机的查询。通常, 递归程序负责发出额外的请求, 以满足客户端的DNS查询。
  2. 根名服务器 (Root nameserver): 根服务器是将人类可读的和主机名转换(解析)为IP地址的第一步。它可以被认为是图书馆中的索引, 指向不同的书架。
  3. TLD名称服务器(Top Level Domain): 顶级域服务器(TLD)可以被视为图书馆中的特定书架。它托管主机名的最后部分(在www.google.com 中, TLD服务器是"com")。
  4. 权威名称服务器: 这个最终名称服务器可以被认为是书架上的一本字典。权威域名服务器是DNS查询的最后一站。如果权威名称服务器有权访问所请求的记录, 它会将所请求主机名的IP地址返回给发出初始请求的DNS递归器(图书管理员)。

权威DNS服务器和递归DNS解析器 有什么区别?

这两个均指的是DNS基础设施中不可或缺的服务器, 但每个服务器都执行不同的角色, 并且位于DNS查询管道内的不同位置。考虑差异的一种方法是递归DNS解析器位于DNS查询的开头, 而权威DNS服务器位于末尾。

递归DNS解析器

递归解析器(DNS Recursive Resolver)是响应客户端递归请求并花时间追踪DNS记录的计算机。它通过发出一系列请求来实现此目的, 直到到达所请求记录的权威DNS名称服务器(如果未找到记录,则超时或返回错误)。 幸运的是, 递归DNS解析器并不总是需要发出多个请求来跟踪响应客户端所需的记录; 缓存是一种数据持久性过程, 可通过在DNS查找的早期所请求的资源记录来帮助缩短必要的请求。

d.png

权威DNS服务器

简单来说, 权威DNS服务器就是实际保存并负责DNS资源记录的服务器。这是DNS查找链底部的服务器,它将响应查询的资源记录, 最终允许发出请求的Web浏览器到达访问网站或其他资源的IP地址。

dns_record_request_sequence_authoritative_nameserver.png

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

e.png

DNS查找的步骤是什么?

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

f.png

一旦DNS查找返回了example.com对应的IP地址, 浏览器可以发送对该网页的请求

  1. 浏览器向 IP 地址发出 HTTP 请求。
  2. IP地址上的服务器返回浏览器中呈现的网页。

需要注意的是: DNS查找信息通常会混存在查询计算机本地或远程DNS基础设施中。所以DNS查找通常有8个步骤。缓存DNS信息, 会跳过DNS查找步骤, 所以上述的步骤是未缓存任何内容时的完整步骤。

什么是DNS解析器?

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

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

区分递归DNS查询(DNS Recursive Query)递归DNS解析器(DNS Recursive Resolver) 非常重要。查询是指向DNS解析器发出的需要解析查询的请求。DNS递归解析器是接受递归查询并通过发出必要的请求来处理响应的计算机。

g.png

DNS查询有哪些类型?

在典型的DNS查找中, 会发生三种类型的查询。通过使用这些查询的组合, DNS梅西的优化过程可以减少行驶距离。

  1. Recursive query(递归查询): 在递归查询中, DNS客户端要求DNS服务器(通常是DNS递归解析器)使用所请求的资源记录或错误消息来响应客户端。
  2. Iterative query(迭代查询): DNS客户端将允许DNS服务器返回其所能返回的最佳答案。如果查询的DNS服务器没有与查询名称匹配的内容, 它将返回对较低级别的域命名空间具有权威性的 DNS 服务器的引用。然后 DNS 客户端将查询引用地址。此过程将继续使用查询链中的其他 DNS 服务器,直到发生错误或超时。
  3. Non-recursive query(非递归查询): 当DNS解析器客户端向DNS服务器查询它有权访问的记录时, 就会发生这种情况, 因为它对该记录具有权威性, 或者该记录存在于其缓存内。通常, DNS服务器会缓存DNS记录, 以防止额外的宽带消耗和上游服务器的负载。

什么是DNS缓存? DNS缓存发生在哪里?

DNS缓存涉及将数据存储在更靠近请求客户端的位置, 以便可以更早地解析DNS查询, 并避免DNS查询链下游的其他查询, 从而缩短加载时间并减少带宽/CPU消耗。

DNS数据可以缓存在多个位置, 每个位置都将在由生存时间(TTL)确定的设定时间内存储DNS记录。

浏览器DNS缓存

现代Web浏览器默认设计为将DNS记录缓存一段时间。这里的目的很明显, DNS缓存离Web浏览器越近, 检查缓存并向IP地址发出正确请求所需的处理步骤就越少。当请求DNS记录时, 浏览器缓存是检查所请求记录的的第一个位置。

在Chrome中, 可以通过转至chrome://net-internals/#dns 查看DNS缓存状态。

操作系统(OS)级DNS缓存

操作系统级DNS解析器是DNS查询离开你的计算机之前的第二个也是最后一个本地停止点。操作系统内用于处理此查询的进程通常称为“存根服务器” 或DNS客户端

存根服务器从应用程序获取请求时, 首先检查自己的缓存以查看是否有该记录。如果没有, 它就会在本地网络外部向Internet服务提供商(ISP)内部的DNS递归解析器发送DNS查询。

当ISP内部的递归解析器收到DNS查询时, 与之前的所有步骤一样, 它还会检查请求的主机到IP地址的转换是否已存储在其本地持久层内。

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

NDS记录类型中的A、NS、CHAME、MX

A记录 (Address)

又称IP指向, 用户可以在此设置子域名并指向到自己的目标主机地址上, 从而实现通过域名找到服务器。

例子:

主机名称 example.cn 记录值 101.20.118.890

相当于为example.cn域名添加一个A记录,那么example.cn会解析到101.20.118.890的地址。

CNAME记录

CNAME记录用于描述目的域名和别名(CDN所对应的节点域名)的对应关系。只要涉及到CDN网络一定会用到。

CNAME记录则可以将一个域名转换为另一个域名,如果多条CNAME记录指向同一个域名,则可以将多个不同的域名请求指向同一台服务器主机。

称为别名指向。您可以为一个主机设置别名。比如设置test.mydomain.com, 用来指向一个www.rddns.com, 那么就可以用test.mydomain.com来代替访问www.rddns.com 。

NS记录(Name Server)

**NS 是将子域名指定其他DNS服务器解析。 **

解析服务器记录。用来表明由哪台服务器对该域名进行解析。这里的NS记录只对子域名生效。比如: 用户希望由192.168.1.0这台服务器解析newx.mydomain.com, 则需要设置newx.mydomain.com的NS记录

MX记录

邮件交换记录。用于将以该域名为结尾的电子邮件指向对应的邮件服务器以进行处理。比如: 用户所用的邮件是以域名mydomain.com为结尾的, 则需要在域名管理界面中添加该域名的MX记录来处理所有以@mydomain.com结尾的邮件

这里简单的了解了一下A、CHAME之类的, 原文章: 域名解析中A记录、CNAME、MX记录、NS记录的区别和联系