开发者
资源
【分享】DNS的工作原理(其一)
【分享】DNS的工作原理(其一)
新人帖
发表于2023/10/19
2000

DNS

什么是DNS

域名系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。

简单来说就是用域名请求服务器换回来ip地址

www . nslookup . io

这个网站可以看dns请求的结果、同理还有linux或者windows的nslookup命令

DNS records for dn11.top

A records

IPv4 addressRevalidate in
104.21.27.1785m
172.67.143.1075m

DNS 服务器使人们无需存储复杂记不住的ip地址,而是记住有规律的域名来方便的访问互联网

DNS记录

DNS 记录是位于权威 DNS 服务器中的指令,提供一个域的相关信息,包括哪些 IP 地址与该域关联,以及如何处理对该域的请求。

常见的 DNS 记录

SOA 记录 - 存储域的管理信息。

;; ANSWER SECTION:
dn11.top.               1800    IN      SOA     ophelia.ns.cloudflare.com. dns.cloudflare.com. 2322082117 10000 2400 604800 1800

NS 记录 - 存储 DNS 条目的名称服务器。

;; ANSWER SECTION:
dn11.top.               21600   IN      NS      ophelia.ns.cloudflare.com.
dn11.top.               21600   IN      NS      phil.ns.cloudflare.com.

A 记录 - 保存域的 IPv4 地址的记录。

;; ANSWER SECTION:
dn11.top.               300     IN      A       104.21.27.178
dn11.top.               300     IN      A       172.67.143.107

AAAA 记录 - 包含域的 IPv6 地址的记录(与 A 记录相反,A 记录列出的是 IPv4 地址)。

CNAME 记录 - 将一个域或子域转发到另一个域,不提供 IP 地址。

MX 记录 - 将邮件定向到电子邮件服务器。

TXT 记录 - 可让管理员在记录中存储文本注释。这些记录通常用于电子邮件安全。

有几种DNS服务器?有几种工作方式?

有两种DNS服务器:DNS递归服务器和DNS权威服务器

有两种工作方式:递归和迭代

DNS客户端设置使用的DNS服务器一般都是DNS递归服务器,它负责全权处理客户端的DNS查询请求,直到返回最终结果。而DNS服务器之间一般采用迭代查询方式。

如何工作的

DNS查询 涉及 4 个 DNS 服务器:

  1. DNS 递归解析器

DNS 解析器是一种服务器,旨在通过 Web 浏览器等应用程序接收客户端计算机的查询。然后,解析器一般负责发出其他请求,以便满足客户端的 DNS 查询。

常见的 dns 递归解析器有

谷歌 8.8.8.8 8.8.4.4

阿里 223.5.5.5 223.6.6.6

百度 180.76.76.76

腾讯DNSPod 119.29.29.29

CloudFlare 1.1.1.1

更多 en . wikipedia . org/wiki/Public_recursive_name_server

  1. 根域名服务器

根域名服务器是将主机名转换(解析)为 IP 地址的第一步。

根域名服务器(英语:root name server,简称“根域名服务器”)是互联网域名解析系统(DNS)中最高级别的域名服务器,负责返回顶级域的权威域名服务器地址。

任意正常 linux 发行版可以运行如下命令来看到这13台根域名服务器

ubuntu@ubuntu_dn11:~$ dig ns . @8.8.8.8

; <<>> DiG 9.18.12-0ubuntu0.22.04.3-Ubuntu <<>> ns . @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9453
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;.                              IN      NS

;; ANSWER SECTION:
.                       71928   IN      NS      a.root-servers.net.
.                       71928   IN      NS      b.root-servers.net.
.                       71928   IN      NS      c.root-servers.net.
.                       71928   IN      NS      d.root-servers.net.
.                       71928   IN      NS      e.root-servers.net.
.                       71928   IN      NS      f.root-servers.net.
.                       71928   IN      NS      g.root-servers.net.
.                       71928   IN      NS      h.root-servers.net.
.                       71928   IN      NS      i.root-servers.net.
.                       71928   IN      NS      j.root-servers.net.
.                       71928   IN      NS      k.root-servers.net.
.                       71928   IN      NS      l.root-servers.net.
.                       71928   IN      NS      m.root-servers.net.

;; Query time: 0 msec
;; SERVER: 8.8.8.8#53(8.8.8.8) (UDP)
;; WHEN: Fri Oct 06 13:22:43 UTC 2023
;; MSG SIZE  rcvd: 239

全球13根域名服务器以英文字母A到M依序命名,域名格式为“字母.root-servers.net”。利用任播(anycast)技术在全球多个地点设立镜像站。

截至2023年6月,全球共有1719台根域名服务器在运行。

Q:为什么是13组?1700组不行吗?

A:由于DNS和某些协议(未分片的用户数据报协议(UDP)数据包在IPv4内的最大有效大小为512字节)的共同限制,根域名服务器地址的数量被限制为13个。一次返回的数据放不下啦~

Q:anycast是什么?

A:我们假设有三台服务器α、β、γ和一台客户机,这三台服务器都宣告了同样的一个地址比如说172.16.255.53,客户机访问172.16.255.53时,会因为路由协议的原因,选择客户机距离服务器最近的一条路径。假设α距离客户机近,访问172.16.255.53获得的数据就是α服务器给客户机的。

Q:anycast的好处?

A:防止服务挂掉、流量会自动寻找最佳路径、假设一台服务器挂掉了,整个服务会被另一台服务器承担。

Q:有 . 这个服务器吗

A:存放这13个根域的是一个文件,它被内置在递归服务器内,没有权威服务器会返回 . 这个域的解析给你。 在这里可以下载到这个文件 www . iana . org/domains/root/files 运营商通常需要配置一个 “Root Hints 文件” 来管理 DNS 递归解析器。该文件包含了根区域的权威名称服务器的名称和 IP 地址,以便软件可以引导 DNS 解析过程。对于许多软件来说,这个列表已经内置在软件中。 www . internic . net/domain/named.root

  1. TLD 名称服务器

顶级域名(英语:Top-level Domain, TLD)是互联网域名系统的等级中,位于根域空间的最高级域名。

顶级域名服务器这个服务器是搜索特定 IP 地址的下一步,其上托管了主机名的最后一部分(例如,在 dn11.top 中,TLD 服务器为 “top”)。

www . iana . org / domains / root / db 这里是世界上完整的顶级域列表。

  1. 权威性域名服务器

权威性域名服务器是域名服务器查询中的最后一站。

权威名称服务器包含特定于其服务域名的信息(例如,dn11.top)权威性域名服务器包含特定于其所服务的域名的信息(例如 dn11.top),并且它可为递归解析器提供在 DNS A 记录中找到的服务器的 IP 地址(例如找到了上文的ipv4地址 104.21.27.178)

图解工作流程

递归工作流程

true

我这里画了一张图:其中红色服务器为DNS递归服务器,PC上的DNS客户端只与DNS递归服务器通讯,由递归服务器完成后续查询内容。蓝色云为想要访问的网站的ip地址所在的服务器。

我会逐一讲解每个过程(箭头)都做了什么。

本图的前提是dns递归服务器中不含任何缓存。

①:PC通过浏览器输入了dn11.top这个域名、dns客户端收到了请求dn11.top这个域名的ip的任务、dns客户端去请求DNS递归服务器

②:DNS递归服务器使用内置的Root Hint文件(内有根服务器的NS解析和根服务器的IP地址)去请求根权威服务器、得到了TLD服务器的NS解析并得到了TLD服务器的ip地址

③:TLD服务器的ip地址被返回给DNS递归服务器

④:DNS递归服务器去请求TLD服务器、得到了域名权威服务器的NS解析并得到了域名权威服务器的NS记录和IP地址

⑤:域名权威服务器的ip地址被返回给DNS递归服务器

⑥:DNS递归服务器去请求域名权威服务器、得到了请求域名最终的ip

⑦:请求域名最终的ip被返回给DNS递归服务器

⑧:请求域名最终的ip被返回给PC上的DNS客户端

⑨:PC上的浏览器用请求域名最终的ip访问域名所在的云服务器

⑩:云服务器返回网页数据给PC浏览器、实现页面的访问

迭代工作流程

true

我这里画了一张图:其中红色服务器为DNS递归服务器,PC上的DNS客户端只与DNS递归服务器通讯,由递归服务器和权威服务器的迭代查询完成后续查询内容。蓝色云为想要访问的网站的ip地址所在的服务器。

我会逐一讲解每个过程(箭头)都做了什么。

本图的前提是dns递归服务器中不含任何缓存。

①:PC通过浏览器输入了dn11.top这个域名、dns客户端收到了请求dn11.top这个域名的ip的任务、dns客户端去请求DNS递归服务器

②:DNS递归服务器使用内置的Root Hint文件(内有根服务器的NS解析和根服务器的IP地址)去请求根权威服务器、根权威服务器收到了请求、找到了TLD权威服务器的NS记录和ip地址

③:根权威服务器请求TLD服务器、TLD服务器收到了请求、找到了域名权威服务器的NS记录和ip地址

④:TLD服务器请求域名权威服务器、权威服务器找到了域名的ip地址

⑤:域名的ip地址从域名权威服务器返回给TLD权威服务器

⑥:域名的ip地址从TLD权威服务器返回给根权威服务器

⑦:域名的ip地址从根权威返回给DNS递归服务器

⑧:请求域名最终的ip被返回给PC上的DNS客户端

⑨:PC上的浏览器用请求域名最终的ip访问域名所在的云服务器

⑩:云服务器返回网页数据给PC浏览器、实现页面的访问

收藏举报
Level 1
0
帖子
0
粉丝
0
获赞