(blibli同步视频:https://www.bilibili.com/video/BV1mWfFYYEUx/?vd_source=ae216d62b7bae16ca9da13d217cc92fb)
DNS(全称Domain Name System,域名系统)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP地址数字串。
打个比喻,DNS在互联网中起到路标指示的作用,指引用户到具体服务器获取信息,一旦路标被毁或出现故障,将导致用户访问网站失败。
DNS的发展是跟随因特网发展而来的产物。互联网和DNS的发展大致可以分成三个阶段:

要明白DNS服务架构,首先要明白什么是DNS根服务器。DNS 根服务器是 DNS 系统的起点,它存储了顶级域名服务器的信息,包括通用顶级域(gTLD)和国家代码顶级域(ccTLD)的域名服务器地址。当用户输入一个域名时,本地 DNS 解析器首先向 DNS 根服务器查询,获取顶级域名服务器的地址。然后,再向该顶级域名服务器查询,逐级向下,直到获得最终的目标服务器的 IP 地址。因此,DNS 根服务器在域名解析的过程中起到了至关重要的作用。
在未缓存的DNS查询期间,每当用户在浏览器中输入网址,该操作都会触发DNS查找,并且所有DNS查找都从根区域开始。查找到达根区域后,将沿DNS系统的层次结构向下移动,首先到达TLD(TopLevelDomain)服务器,然后到达特定域(可能还有子域)的服务器,直到最终到达权威名字服务器,以查到正确的域名,其中包含要搜索的网站的数字IP地址。然后,该IP地址被返回给客户端。有趣的是,尽管需要许多骤,但此过程仍可以非常快速地进行。

实际上,DNS 根服务器的数量远不止13个。13个字母只是一个符号性的表示方式,用于方便标识这些根服务器的名称。每个字母代表一个名为“根区域”的逻辑区域,而每个根区域都由多个实际的根服务器组成,以提供冗余和高可用性。
每个根区域都有多个根服务器,它们被称为“根服务器实例”或“根服务器镜像”。这些实例分布在全球各地的多个地理位置和数据中心,由不同的组织和运营商负责。这样做是为了确保 DNS 服务的稳定性、可靠性和快速响应。
在每个根区域中,根服务器实例使用 anycast 技术,这是一种将同一个 IP 地址同时分配给多个服务器的技术。当用户向 DNS 根服务器查询时,它们的请求将被路由到最近的、可用的根服务器实例,从而降低了延迟,并分散了全球范围内的查询负载。
因此,虽然根区域字母只有13个,但实际上 DNS 根服务器的数量远远超过13个,它们共同构成了 DNS 系统的核心。

根区域的最终权限属于国家电信和信息管理局(NTIA),后者是美国商务部的一部分。NTIA将根区域的管理委托给Internet名称与数字地址分配机构(ICANN)。ICANN为根区域中13个IP地址之一操作服务器,并将其他12个IP地址的操作委托给包括NASA、马里兰大学和Verisign(唯一运营两个根IP地址的组织)在内的多个组织。cloudflare帮助向名为F-Root的根服务器提供DNSAnycast服务;Cloudflare根据与ISC(F-Root运营商)的合同提供其他F-Root实例。
由于DNS根区域位于DNS层次结构的顶部,因此递归解析器无法在DNS查找中被引导到这些位置。因此,每个DNS解析器都在其软件中内置了13个IP根服务器地址的列表。每次发起DNS查找时,递归器的第一个通信就是与这13 个IP地址之一进行的。
由于使用了Anycast路由并具备高冗余性,根服务器非常可靠。但是在极少数情况下,根服务器将必须更新其IP地址。在这种情况下,递归解析器可以继续使用根区域中的其他12个IP地址执行DNS查找,直到它们的软件更新为所有13台服务器的正确地址为止。由于所有根服务器都能够将DNS请求转发到TLD服务器,因此当一台根服务器关闭时,不会影响Internet正常运行。
根据IANA定义,顶级域分为:基础设施顶级域(ARPA),通用顶级域(gTLD),通用受限制顶级域(grTLD),赞助类顶级域(sTLD),国家和地区顶级域(cCTLD),测试顶级域(tTLD)。
下表罗列了部分顶级域及分类:
| 分类 | 子分类 | 顶级域 | 用途/说明 | 示例或备注 |
|---|---|---|---|---|
| 通用顶级域(gTLDs) | 常见开放注册 | .com | 商业用途(开放注册) | 最广泛使用的顶级域 |
.org | 原为非营利组织,现开放注册 | 常用于公益、开源项目 | ||
.net | 网络服务(现开放注册) | 早期用于网络基础设施 | ||
| 赞助类 | .edu | 美国教育机构(需认证) | 仅限美国授权教育机构使用 | |
.gov | 美国政府机构 | 仅限美国联邦或州政府使用 | ||
| 新增通用顶级域 | .app | 应用程序 | 需启用HTTPS加密 | |
.xyz | 通用 | 因价格低廉广泛使用 | ||
.ai | 安圭拉国家代码,但多用于人工智能领域 | 商业化推广(如AI公司) | ||
| 国家代码顶级域(ccTLDs) | 主要国家/地区 | .us | 美国 | 开放注册,但需美国关联 |
.cn | 中国 | 需实名认证 | ||
| 基础设施顶级域 | - | .arpa | 技术基础设施(如反向DNS查询) | 仅用于互联网技术管理 |
| 国际化顶级域(IDN TLDs) | - | .中国 | 中文域名 | 支持中文输入 |
.рф | 俄语域名(俄罗斯) | 仅允许西里尔字母 | ||
| 其他特殊用途 | - | .example | 保留示例 | 不可注册 |
.test | 测试用途 | 本地开发环境使用 | ||
.localhost | 本地网络 | 指向本机(127.0.0.1) |
1.client要访问 www.baidu.com,首先查找本机 DNS 缓存,再查找自己的 hosts 文件,若都没有找到,则向 DNS 服务器发送查询请求(DNS Server为计算机设置的DNS,如114.114.114.114或8.8.8.8)
2.DNS Sever收到 request,首先查看自己是有 www.baidu.com 的缓存,若有直接返回给 client,若没有越级上访到根域,并询问根域
3.根域看到是找 .com 域的,会把到 .com 域的路(也就是Address)告诉DNS Server,让DNS Sever自己去找 .com
4.DNS Server去找 .com, .com看到是自己管辖下的 baidu.com ,就把 baidu.com 的 IPAdress 给 DNSServer 让他去找 baidu.com
5.DNS找到baidu.com,baidu.com发现 DNS Sever 要找的是自已区域里的 www 主机,就把这个 HostIP 给 DNS Server
6.DNS Server会把得到的 www.baidu.com 的IP结果告诉 client,并缓存一份结果在自己的机器中(默认会缓存,因为该服务器允许为 client 递归,否则不会缓存非权威数据)
7.client得到回答的 IPAdress 后缓存下来并去访问 www.baidu.com ,然后 www.baidu.com 就把页面内容发送给 client
为什么客户端到DNS服务器阶段是递归查询?因为客户端本身不是DNS服务器,它自已是找不到互联网上的域名地址的,所以只能询问DNS服务器,最后一定由DNS服务器来返回答案,所以DNSSerVer需要对这个客户端允许递归。因此,dns解析器(nslookup、host、dig等)所发出的查询都是递归查询。

| ower-name | TTL | class | type | data |
|---|---|---|---|---|
| www,example.com | 300 | IN | A | 192.168.1.10 |
上面是一个RR资源记录示例,所有的RR都具有相同的顶级字段格式定义:ower TTL class type data
**owner:**指RR的DNS域名
**TTL:**对大多数资源记录,该字段为可选项。指明其它DNS服务器在期满放弃该记录信息之前对其缓存多长时间。TTL值为零的资源记录不会被缓存
CLASS有如下几种类型:IN(Internet类) 、CS(CSNET类)、CH(CHAOs类)、HS(Hesiod)很少使用
type有如下类型:
A记录
用来将 域名解析 到IPv4地址的 DNS 记录。A记录也称为主机记录,是使用最广泛的DNS记录,A记录的基本作用就是说明一个域名对应的IP是多少,它是域名和IP地址的对应关系,表现形式为www.example.com 192.168.1.10这就是一个A记录!A记录除了进行域名IP对应以外,还有一个高级用法,可以作为低成本的负载均衡的解决方案,比如说 www.example.com 可以创建多个A记录,对应多台物理服务器的IP地址,可以实现基本的流量均衡。
AAAA记录
用来将 域名解析 到IPv6地址的 DNS 记录,用法和A记录一致。
Ns(Name Server)记录
NS记录和SOA记录是任何一个DNS区域都不可或缺的两条记录,NS记录也叫名称服务器记录,用于说明这个区域有哪些DNS服务器负责解析,SOA记录说明负责解析的DNS服务器中哪一个是主服务器。因此,任何一个DNS区域都不可能缺少这两条记录。NS记录,说明了在这个区域里,有多少个服务器来承担解析的任务
SOA记录
NS记录说明了有多台服务器在进行解析,但哪一个才是主服务器呢,NS并没有说明,这个就要看SOA记录了,SOA名叫起始授权机构记录,SOA记录说明了在众多NS记录里那一台才是主要的服务器!
MX记录
全称是邮件交换记录,在使用邮件服务器的时候,MX记录是无可或缺的,比如A用户向B用户发送一封邮件,那么他需要向DNS查询B的MX记录,DNS在定位到了B的MX记录后反馈给A用户,然后A用户把邮件投递到B用户的MX记录服务器里!
Cname记录
又叫别名记录,我们可以这么理解,我们小的时候都会有一个小名,长大了都是学名,那么正规来说学名的符合公安系统的,那个小名只是我们的一个代名词而已,这也存在一个好处,就是比暴漏自己,比如一个网站a.com在发布的时候,他可以建立一个别名记录,把b.com发布出去,这样不容易被外在用户所察觉!达到隐藏自己的目的!
SRV记录
SRV记录是服务器资源记录的缩写,SRV记录是DNS记录中的新鲜面孔,在RFC2052中才对SRV记录进行了定义,因此很多老版本的DNS服务器并不支持SRV记录。那么SRV记录有什么用呢?SRV记录的作用是说明一个服务器能够提供什么样的服务,
PTR记录
PTR记录也被称为指针记录,PTR记录是A记录的逆向记录,作用是把IP地址解析为域名。由于我们在前面提到过,DNS的反向区域负责从IP到域名的解析,因此如果要创建PTR记录,必须在反向区域中创建。
本文作者:大鹏
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!