关于运维:DNS工作原理分析

3次阅读

共计 4654 个字符,预计需要花费 12 分钟才能阅读完成。

DNS 协定是互联网外围协定之一。不论是上网浏览,还是编程开发,都须要理解一点它的常识。

一、什么是 DNS?

DNS(Domain Name System)是“域名零碎”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名零碎,它用于 TCP/IP 网络,它所提供的服务是用来将主机名和域名转换为 IP 地址的工作。你能够把它设想成一本微小的电话本。
举例来说,如果你要拜访域名 math.stackexchange.com,首先要通过 DNS 查出它的 IP 地址是 151.101.129.69。
这些都称为 DNS 记录。

What is DNS? DNS Meaning
Understanding DNS Port 53 with Examples

Understanding DNS Records – PTR MX SRV CNAME AAAA

二、DNS 域名空间构造

域名零碎作为一个层次结构和分布式数据库,蕴含各种类型的数据,包含主机名和域名。DNS 数据库中的名称造成一个分层树状构造称为域命名空间。

根域:DNS 域名应用中规定由尾部句点 ’.’ 来指定名称位于根或者更高层次的域层次结构。

顶级域:用来批示某个国家、地区或者组织。采纳三个字符,如 com -> 商业公司,edu -> 教育机构,net -> 网络公司,gov -> 非军事政府机构等等。

二级域:集体或者组织在 Internet 应用的注册名称。采纳两个字符,如:cn -> 代表中国,jp -> 日本,uk -> 英国,hk -> 香港等等。

主机:主机名处于域名空间构造中的最底层,主机名和域名联合形成 FQDN,主机名是 FQDN 最左端的局部。

Flush DNS Cache with Command Quick Guide

三:DNS 服务器

运行 DNS 服务器程序的计算机, 贮存 DNS 数据库信息.DNS 服务器会尝试解析客户机的查问申请.

在解答查问时, 如果 DNS 服务器能提供所申请的信息, 就间接回应解析后果, 如果该 DNS 服务器没有相应的域名信息, 则为客户机提供另一个能帮忙解析查问的服务器地址, 如果以上两种办法均失败, 则回应客户机没有所申请的信息或申请的信息不存在.

Best and Fastest DNS Server For PS4 PS5
Best and Fastest DNS Servers For Gaming
Free DNS Servers in 2021

四:DNS 缓存

DNS 服务器在解析客户机申请时, 如果本地没有该 DNS 信息, 则能够会询问其余 DNS 服务器, 当其余域名服务器返回查问后果时, 该 DNS 服务器会将后果记录在本地的缓存中, 成为 DNS 缓存. 当下一次客户机提交雷同申请时,DNS 服务器可能间接应用缓存中的 DNS 信息进行解析.

Flush DNS Cache with Command Quick Guide

五、DNS 的获取流程

DNS 是应用层协定,事实上他是为其余应用层协定工作的,包含不限于 HTTP 和 SMTP 以及 FTP,用于将用户提供的主机名解析为 IP 地址。
具体过程如下:
①用户主机上运行着 DNS 的客户端,就是咱们的 PC 机或者手机客户端运行着 DNS 客户端了。
②浏览器将接管到的 url 中抽取出域名字段,就是拜访的主机名,比方 http://www.baidu.com/,并将这个主机名传送给 DNS 利用的客户端。
③DNS 客户机端向 DNS 服务器端发送一份查问报文,报文中蕴含着要拜访的主机名字段(两头包含一些列缓存查问以及分布式 DNS 集群的工作)。
④该 DNS 客户机最终会收到一份答复报文,其中蕴含有该主机名对应的 IP 地址。
⑤一旦该浏览器收到来自 DNS 的 IP 地址,就能够向该 IP 地址定位的 HTTP 服务器发动 TCP 连贯。

Understanding DNS Port 53 with Examples

六、DNS 服务的体系架构

DNS 服务的作用:把域名解析为 IP 地址,将 IP 地址解析为域名。
假如运行在用户主机上的某些应用程序(如 Webl 浏览器或者邮件阅读器)须要将主机名转换为 IP 地址。这些应用程序将调用 DNS 的客户机端,并指明须要被转换的主机名。(在很多基于 UNIX 的机器上,应用程序为了执行这种转换须要调用函数 gethostbyname())。用户主机的 DNS 客户端接管到后,向网络中发送一个 DNS 查问报文。所有 DNS 申请和答复报文应用的 UDP 数据报通过端口 53 发送(至于为什么应用 UDP,请参看为什么域名根服务器只能有 13 台呢?– 郭无心的答复)通过若干 ms 到若干 s 的延时后,用户主机上的 DNS 客户端接管到一个提供所心愿映射的 DNS 答复报文。这个查问后果则被传递到调用 DNS 的应用程序。因而,从用户主机上调用应用程序的角度看,DNS 是一个提供简略、间接的转换服务的黑盒子。但事实上,实现这个服务的黑盒子非常复杂,它由散布于寰球的大量 DNS 服务器以及定义了 DNS 服务器与查问主机通信形式的应用层协定组成。

Exploring EDNS with Examples

七、DNS 为什么不采纳单点的集中式的设计形式,而是应用分布式集群的工作形式?

DNS 的一种简略的设计模式就是在因特网上只应用一个 DNS 服务器,该服务器蕴含所有的映射,在这种集中式的设计中,客户机间接将所有查问申请发往繁多的 DNS 服务器,同时该 DNS 服务器间接对所有查问客户机做出响应。只管这种设计形式十分迷人,但它不实用以后的互联网。因为当今的因特网有着数量微小并且在持续增长的主机,这种集中式设计会有单点故障,通信容量(上亿台主机发送的查问 DNS 报文申请,包含但不限于所有的 HTTP 申请,电子邮件报文服务器,TCP 长连贯服务),远距离的时间延迟(澳大利亚到纽约的举例),保护开销大(因为所有的主机名 -IP 映射都要在一个服务站点更新)等问题。

DNS 服务器个别分三种,根 DNS 服务器,顶级 DNS 服务器,权威 DNS 服务器。

八、DNS 服务的工作过程

当 DNS 客户机须要查问程序中应用的名称时,它会查问本地 DNS 服务器来解析该名称。客户机发送的每条查问音讯都包含 3 条信息,以指定服务器应答复的问题。
● 指定的 DNS 域名,示意为齐全合格的域名 (FQDN)。
● 指定的查问类型,它可依据类型指定资源记录,或作为查问操作的专门类型。
● DNS 域名的指定类别。
对于 DNS 服务器,它始终应指定为 Internet 类别。例如,指定的名称能够是计算机的齐全合格的域名,如 im.qq.com,并且指定的查问类型用于通过该名称搜寻地址资源记录。
DNS 查问以各种不同的形式进行解析。客户机有时也可通过应用从以前查问取得的缓存信息就地应答查问。DNS 服务器可应用其本身的资源记录信息缓存来应答查问,也可代表申请客户机来查问或分割其余 DNS 服务器,以齐全解析该名称,并随后将应答返回至客户机。这个过程称为递归。
另外,客户机本人也可尝试分割其余的 DNS 服务器来解析名称。如果客户机这么做,它会应用基于服务器应答的独立和附加的查问,该过程称作迭代,即 DNS 服务器之间的交互查问就是迭代查问。

Using Tcpdump to Filter DNS Packets

九:DNS 的查问过程

1、在浏览器中输出 www . qq .com 域名,操作系统会先查看本人本地的 hosts 文件是否有这个网址映射关系,如果有,就先调用这个 IP 地址映射,实现域名解析。
2、如果 hosts 里没有这个域名的映射,则查找本地 DNS 解析器缓存,是否有这个网址映射关系,如果有,间接返回,实现域名解析。
3、如果 hosts 与本地 DNS 解析器缓存都没有相应的网址映射关系,首先会找 TCP/ip 参数中设置的首选 DNS 服务器,在此咱们叫它本地 DNS 服务器,此服务器收到查问时,如果要查问的域名,蕴含在本地配置区域资源中,则返回解析后果给客户机,实现域名解析,此解析具备权威性。
4、如果要查问的域名,不禁本地 DNS 服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个 IP 地址映射,实现域名解析,此解析不具备权威性。
5、如果本地 DNS 服务器本地区域文件与缓存解析都生效,则依据本地 DNS 服务器的设置(是否设置转发器)进行查问,如果未用转发模式,本地 DNS 就把申请发至 13 台根 DNS,根 DNS 服务器收到申请后会判断这个域名 (.com) 是谁来受权治理,并会返回一个负责该顶级域名服务器的一个 IP。本地 DNS 服务器收到 IP 信息后,将会分割负责.com 域的这台服务器。这台负责.com 域的服务器收到申请后,如果本人无奈解析,它就会找一个治理.com 域的下一级 DNS 服务器地址 (http://qq.com) 给本地 DNS 服务器。当本地 DNS 服务器收到这个地址后,就会找 http://qq.com 域服务器,反复下面的动作,进行查问,直至找到 www . qq .com 主机。
6、如果用的是转发模式,此 DNS 服务器就会把申请转发至上一级 DNS 服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根 DNS 或把转申请转至上下级,以此循环。不论是本地 DNS 服务器用是是转发,还是根提醒,最初都是把后果返回给本地 DNS 服务器,由此 DNS 服务器再返回给客户机。
从客户端到本地 DNS 服务器是属于递归查问,而 DNS 服务器之间就是的交互查问就是迭代查问。

Exploring DNS TTL with Examples

10. DNS record

A 记录也称为主机记录,是应用最宽泛的 DNS 记录,A 记录的根本作用就是阐明一个域名对应的 IP 是多少,例如,咱们想通过 A 记录阐明一台主机的域名是 bbs.hexun.com,IP 是 202.99.16.185,这就是一个 DNS A 记录。

Understanding DNS A Record with Examples
Understanding DNS Records – PTR MX SRV CNAME AAAA

Exploring DNS TTL with Examples

十一:应用 Dig 查问 DNS 记录

dig 执行后返回的内容
显示 dig 命令的版本和输出的参数
显示服务器返回的一些技术详情(status:NOERROR 示意本次查问胜利完结)
显示要查问的域名
查问的后果
查问的一些统计信息

Query DNS Record with Dig Command in Linux
Understanding Linux Dig Command

Query DNS Txt Record with Dig Command

十二:Tcpdump 抓取 DNS 数据包

这一次执行 tcpdump 抓包时,咱们应用“port domain”来过滤数据包,示意只抓取应用 domain(域名)服务的数据包,即 DNS 查问和应答报文。tcpdump 的输入如下:

IP 192.168.0.141.53511 > 192.168.0.1.53: 65362+ A? www.jd.com. (28)
IP 192.168.0.1.53 > 192.168.0.141.53511: 65362 2/0/0 CNAME www.jdcdn.com., A 14.152.71.1 (68)
这两个数据包开始的“IP”指出,它们前面的内容形容的是 IP 数据报。tcpdump 以“IP 地址. 端口号”的模式来形容通信的某一端;以“>”示意数据传输的方向,“>”后面是源端,前面是目标端。可见,第一个数据包是测试主机 1(IP 地址是 192.168.0.141)向其首选 DNS 服务器(IP 地址是 192.168.0.1.53)发送的 DNS 查问报文(指标端口 53 是 DNS 服务应用的端口),第二个数据包是服务器反馈的 DNS 应答报文。

Filtering DNS with Tcpdump Port 53
Using Tcpdump to Filter DNS Packets

正文完
 0